相关: 在DB中存储图像 - 是还是不?
在阅读上述问题后,似乎使用数据库进行图像存储的首选方法是仅在数据库中存储文件路径.但是,大多数答案似乎都集中在Web服务器上.
就我而言,我正在开发一个桌面应用程序,它将在Intranet中的多台计算机上使用.专用服务器将托管数据库,其中包含与在各种设备上执行测试相关的信息.
图像需要以某种方式存储在服务器上.在这种情况下,将图像存储在数据库中是否是正确的方法,甚至是唯一的方法?
优点:
缺点
编辑:如标签中所述,应用程序是用C#/ .NET编写的.如果在这种情况下将图像写入文件系统是一个选项,我可以使用一些帮助来理解这是如何完成的.
编辑2:正如下面的评论中详细阐述的那样,现在我假设一个MySQL数据库,尽管SQL Server 2008的FileStream功能可能会改变它.
同样在我的情况下,图像将经常添加,并且在此之后可以被认为是只读的,因为它们永远不应该被更改,并且将在需要时被读出.图像可能很小(每个约70k),我也在考虑服务器上的其他二进制格式存储,每个文件大约20k,我可能会使用相同的存储和检索方法.
谁能告诉我在MySQL数据库中存储图像的弊端?
效率不如将图像存储在服务器上吗?与磁盘存储相比,映像下载将花费更长的时间,并且会给数据库带来沉重的负担吗?感谢帮助!
我阅读本教程关于在DB中存储图像.在本教程中,作者在插入之前转义二进制数据中的特殊字符:http://www.phpriot.com/articles/images-in-mysql/7 (addslashes尽管使用虽然mysql_real_escape_string更好 - 但这是另一个问题).
关键是,在显示时,他只显示存储的数据:http://www.phpriot.com/articles/images-in-mysql/8
我的问题:
1)我们是否需要转义特殊字符,即使对于二进制字段类型(blob)?
2)如果是这样,那么,为了正确显示图像,我们不需要再次"取消"字符吗?(如果是这样,最好的方法是什么.关于效率的任何评论?对于大图像:转义和转移可能是一个很大的开销?).
或者我对转义的理解是完全错误的(转义只会影响查询,而不会影响插入/存储的最终数据?).
谢谢
J.P
我试图挽救.doc,.pdf,.txt,使用Hibernate,JSF和MySQL和图像文件到我的数据库.
我创建了一个列来保存BLOB类型的文件.如果我保存.txt类型,则文件正确保存.
如果我想保存任何其他格式的文件,那么我得到一个例外.在我的bean中,我创建了一个字段名称:byte[] file;
如何正确保存它没有任何例外?我是否需要更改mysql列的数据类型或为java类使用不同的字段?
(回应BalusC)
这是我用于文件编写的代码.我正在使用fileInputStream然后使用hibernate框架保存文件.
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
String name = item.getFieldName();
String value = item.getString();
} else {
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
byte[] fileInBytes=item.get();
try {
File uploadedFile = new File("/home/db/webApp", fileName);
uploadedFile.createNewFile();
FileInputStream fileInputStream = new FileInputStream(uploadedFile); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,我们需要存储大量没有图像说大约1000万,所以这是存储图像的最佳方式.在速度和效率方面最好的方式.它是一个基于Web的项目,因此图像检索应该很快.
数据库
将图像存储为数据库中的base64.
我们正在开发一个nosql数据库.
文件系统
创建唯一ID并将其存储在文件夹下.
我正在编写一个ASP.NET MVC4应用程序,它将上传的图像存储byte[]在数据库中(使用Entity框架),然后显示它们.要在视图中显示我正在使用此代码的图像:
<img src="data:image;base64,@System.Convert.ToBase64String(item.ImageByte)" alt=""/>
Run Code Online (Sandbox Code Playgroud)
但每次刷新页面时,我都会看到浏览器没有缓存图像,只是再次渲染它会导致无用的带宽使用.
也许有更多带宽更友好的方式来显示图像?也许将上传的图像存储为'byte []'的想法首先是愚蠢的(我的应用程序只是一个简单的网页,存储有关心理学的文章:D与管理面板来实现这一点)我应该只存储图像一个文件夹?
谢谢
我想存储一个网页Sql Server.该页面可能包含图像和其他内容.我应该使用哪种数据类型?如前所述这里, NTEXT,文字和图像数据类型都将在未来的版本中删除SQL Server.什么数据类型可用于存储HTML具有不同内容的文件,如图像和JavaScript代码等内容?
我正在编写一个php/mysql网络应用程序,这有点像一个博客平台,人们可以上传图片并发布它们.
存储这些图像的最佳方法是什么,通过BLOB将它们存储在文件夹或mySQL表中?
我问这个是因为我想要最简单的方法让我轻松移动到另一台主机/服务器,而无需花费数天时间下载所有发布的图片,并将它们上传到新服务器.
可选问题:专用服务器是否足以支持已启动的博客平台?
谢谢
我将有一个包含许多公司的网站,每个公司都可以上传他们的徽标.为每个注册的公司创建一个文件夹是一个好主意,所以它将是
公司/ user1/logo.jpg和companies/user2/logo.jpg 并且只是将每个人存储在一个文件夹中,这样我就不会需要路径来引用图像?
或者我应该将它们存储在像company_logos/gaegha724252.jpg这样的文件夹中,它们都是随机文件名,路径是否会存储在与该公司相关的数据库中?
有哪些优点和缺点?
谢谢!
我知道在数据库中将文件存储为blob是不好的做法存在很多争议,但我只想了解这是否对我的情况有意义.
我正在创建一个ASP.NET应用程序,在大型公司内部使用,用户需要能够将文件附加到系统中的"作业".这些文件通常是PDF或Word文档,可能永远不会超过几MB.
我正在创建一个像这样的新表:
ID (int)
JobID (int)
FileDescription (nvarchar(250))
FileData (varbinary(MAX)
Run Code Online (Sandbox Code Playgroud)
varbinary(MAX)这里使用是理想的,还是我应该存储文件的路径,只是将文件存储在文件系统的某个地方?