coldfusion MSFT SQL Image Store

时间:2014-08-19 11:56:05

标签: sql coldfusion

我正在使用ColdFusion 10并处理新项目,允许用户从事件上传图片。从未使用过用户上传的图片。如何将图像存储在MSFT SQL中?当用户上传巨大的10张MEG图片时,是否有最佳做法?有没有办法控制或自动压缩图片?

谢谢!

2 个答案:

答案 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)你需要在你的申请中。

将图像存储在数据库中可以使它们在群集中更容易移植。如果这不是一个问题,那么我倾向于为每个上传的图像生成一个唯一的名称,重命名它们,并将唯一的名称存储在数据库中而不是图像本身。