昨天我问了一个关于如何保存文件的问题.经过一些研究后,我决定将文件存储在数据库中.
我已经检查了使用文件流存储文件和将文件存储在数据库本身之间的区别.
每个都有它的优点和缺点.为了帮助我进行研究,这个网站帮助了我很多:http: //www.codeproject.com/KB/database/SqlFileStream.aspx
所以基本上它说如果文件大于1mb,使用文件流保存文件会更好.
但我发现了文件流的另一个问题.如果删除数据库中的记录,则文件系统上仍存在该文件.
所以我需要你们的意见.用什么?文件流或使用VARBINARY保存数据库中的文件?
Grtz,M.
我试图通过表单上传文件,然后在SQL中保存为blob.
我已经让我的表单工作正常,我的数据库完全能够获取blob并且我有一个控制器来获取文件,将其保存在本地目录中:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult FileUpload(int id, HttpPostedFileBase uploadFile)
{
//allowed types
string typesNonFormatted = "text/plain,application/msword,application/pdf,image/jpeg,image/png,image/gif";
string[] types = typesNonFormatted.Split(',');
//
//Starting security check
//checking file size
if (uploadFile.ContentLength == 0 && uploadFile.ContentLength > 10000000)
ViewData["StatusMsg"] = "Could not upload: File too big (max size 10mb) or error while transfering the file.";
//checking file type
else if(types.Contains(uploadFile.ContentType) == false)
ViewData["StatusMsg"] = "Could not upload: Illigal file type!<br/> Allowed types: images, Ms Word documents, PDF, plain text files.";
//Passed all security …Run Code Online (Sandbox Code Playgroud) 在我的SQL Server Management Studio 2008项目中,我创建了一个名为的表
Catalog (
catalogId NOT NULL PRIMARY KEY,
catalogName VARCHAR(20),
CatalogImage VARBINARY(MAX)
)
Run Code Online (Sandbox Code Playgroud)
有3个条目:
catalogId | catalogName | catalogImage
1 | jon | NULL
2 | jim | NULL
3 | joe | NULL
Run Code Online (Sandbox Code Playgroud)
我希望在表格中为每个条目添加一个图像.以下用于插入图像的查询,例如对于jon:
INSERT INTO Catalog (catalogImage)
SELECT BulkColumn FROM OPENROWSET( Bulk 'C:\images\jon.bmp', SINGLE_BLOB) AS BLOB
WHERE catalogId=1
Run Code Online (Sandbox Code Playgroud)
生成错误消息" 无效的列名'catalogId'. "
什么是正确的查询?
非常感谢,格雷格
在iPhone App中如何存储UIImage转换为NSData到BLOB数据类型的sqlite表?是否需要任何类型的绑定(NSData- > Blob)?
要么
在NSData以sqlite Blob数据类型检索以表单形式存储的图像时,我是否需要执行任何任务来将blob数据类型中存储的数据库转换回NSData形式?
请帮助和建议.
我目前正在创建我朋友的艺术家作品集网站.她让我创建一个简单的系统,在那里她可以上传图像,它将根据其所在的类别显示在网站上.我偶然发现了几种有用且有趣的方法来实现这一目标,我将其缩小到对我来说最有用的两种方法.不幸的是,我不知道哪一个会是更好的选择.
选项A:http://www.phpriot.com/articles/images-in-mysql
此方法使用一种非常有争议的方式使用
blob数据类型在mySQL表中存储图像.我已经读过许多PHP程序员不推荐它,但它看起来似乎完全符合我的需求.据我所知,这很简单容易:
- 将图像上传到DB
- 根据所选类别从DB显示图像.
选项B: http ://webdeveloper.com/forum/showthread.php?t = 101466
此方法仅显示如何使用PHP将图像上载到目录.我想,一旦完成,我可以创建该目录中所有图像的简单列表并将其放入数组中.然后循环遍历数组并在
<img>标签中显示这些项目.
所以,你看,我还在学习如何使用PHP和mySQL,这个网站是学习的好动力.但是,我不确定使用哪种方法,或者大多数Web开发人员使用单一方法?
需要考虑的问题// TL; DR
在此先感谢您的回复!
我的应用程序正在查询 - 其余的 - 一个包含blob列和其他元数据列(没有其他LOB列)的表.
我已经读过,如果对象本身不是太大,它可能仍然存储在表中,而不是作为自身的链接.在这种情况下,这样的表上的'SELECT'语句,即使它不包含blob,如:
SELECT Date FROM MyTable
Run Code Online (Sandbox Code Playgroud)
可能仍然会检索blob(仅在服务器中),因此执行时间更长.
这是真的?任何人都可以提供解释或链接到一个?
我在SQL中的背景是相当基础的,所以我可能不准确,抱歉.
谢谢.
我正在将文件上传到Azure.代码上传文件很好,但我的页面在最终确定之前刷新并显示旧图像.我可以手动刷新页面并显示新图像.为什么我的方法不等待任务完成?
public static bool Upload(Stream image, String id)
{
try {
var key = String.Format("{0}.png", id);
image.Position = 0;
var container = new CloudBlobContainer(new Uri(string.Format("{0}/{1}", Host, Container)), Credentials);
var blob = container.GetBlockBlobReference(key);
blob.Properties.ContentType = "image/png";
Task task = Task.Run(() => { blob.UploadFromStreamAsync(image); });
Task.WaitAll(task);
}
catch {
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
答案:谢谢aleksey.berezan.事实证明答案甚至没有使用任务.
所以这:
Task task = Task.Run(() => { blob.UploadFromStreamAsync(image); });
Task.WaitAll(task);
Run Code Online (Sandbox Code Playgroud)
成为了这个:
Task.WaitAll(blob.UploadFromStreamAsync(image));
Run Code Online (Sandbox Code Playgroud)
一切都很完美!
我正在尝试使用AndroidImageSlider库,并用我以base64字符串下载的图像填充它。
该库仅接受URL,R.drawable值和File对象作为参数。
我试图将图像字符串转换为File对象,以便传递给库函数。到目前为止,我已经能够从base_64解码并转换为byte []。
String imageData;
byte[] imgBytesData = android.util.Base64.decode(imageData, android.util.Base64.DEFAULT);
Run Code Online (Sandbox Code Playgroud) 我在CDN中设置了一些静态内容,但是当访问.html文件时,文件会被下载而不会在浏览器中呈现.
我正在使用blob容器
http://cdn-dezelo-consulting01.azureedge.net/index.html
我不知道我错过了什么?
我的函数在控制台中登录时会返回一个blob对象:
Blob(623853) {name: "profile.jpg", size: 623853, type: "image/jpeg"}
Run Code Online (Sandbox Code Playgroud)
我想用JavaScript向用户显示此图像,我该怎么做?
blob ×10
image ×3
sql-server ×3
azure ×2
sql ×2
android ×1
asynchronous ×1
c# ×1
cdn ×1
file-upload ×1
filestream ×1
iphone ×1
java ×1
javascript ×1
mysql ×1
nsdata ×1
objective-c ×1
php ×1
sqlite ×1
task ×1
varbinary ×1
web-frontend ×1