我正在使用ColdFusion 10并处理新项目,允许用户从事件上传图片。从未使用过用户上传的图片。如何将图像存储在MSFT SQL中?当用户上传巨大的10张MEG图片时,是否有最佳做法?有没有办法控制或自动压缩图片?
谢谢!
答案 0 :(得分:1)
这是一个两部分问题:
第1部分:
第一部分将是您的数据存储和拉取。您将在cfquery中使用的位置,cfqueryparam将如下所示:
INSERT into EMPLOYEES (FirstName,LastName,Photo)
VALUES ('Aiden','Quinn',<cfqueryparam value="#ImageGetBlob(myImage)#" cfsqltype='cf_sql_blob'>)
要选择然后重建,您将使用此:
<cfset myImage = ImageNew(#GetBLOBs.PHOTO#)>
然后你可以这样做:
<img src='#myImage#>
Above examples pulled from the docs.
熟悉<cfimage>
和cfscript版本image()
进行编辑(旋转,缩放等)
第2部分:
您问题的另一部分与上传限制有关。
Coldfuion具有可以在CFIDE或RAILO等效中更改的限制。您的Web服务中还设置了限制器,如apache和IIS,您必须查看此更改。
但如果你只关心10 mb大小的图像,你会没事的。当你进入数百个MB大小的文件时会引起麻烦。
请记住在您的表单上将表单类型设置为此,因为您必须先将文件上传到服务器,然后才能使用它:
<form action="workPage.cfm" method="post" enctype="multipart/form-data">
您还必须使用<cffile>
我认为这一切足以让你开始。
答案 1 :(得分:0)
如果您担心图像的存储大小,这当然是一个合理的问题,那么您可以使用将图像缩小到最大尺寸和质量或压缩级别(如果存储为jpeg)你需要在你的申请中。
将图像存储在数据库中可以使它们在群集中更容易移植。如果这不是一个问题,那么我倾向于为每个上传的图像生成一个唯一的名称,重命名它们,并将唯一的名称存储在数据库中而不是图像本身。