我可以将Coldfusions cffile action =“upload”与图像目标网址一起使用吗?

时间:2012-08-09 21:42:47

标签: file-upload coldfusion verification cffile

我需要循环遍历路径名和图像名称列表,并在更改文件大小并将其存储到服务器之前验证文件是否存在且是jpg / png。

我想用这个:

   <cffile result="upload" action="upload" accept="image/jpeg, image/png" destination="#tempDirectory#" nameconflict="overwrite" />
    <cfset testFilePath = tempDirectory & upload.serverFile>
    <cfimage name="tempFile" action="read" source="#testFilePath#" />
    <cfif NOT isImageFile( testFilePath ) >
        <cfset fileDelete( testFilePath ) />
        <cfthrow type="FileNotFound" message="#tx_settings_icons_error_img#" />
    <cfelseif NOT listfindnocase(allow, upload.serverfileext) >
        <cfset fileDelete( testFilePath ) />
        <cfthrow type="FileNotFound" message="#tx_settings_icons_error_file#" />
    </cfif>

但我的问题是,我不知道如何从

这样的路径上传文件
 http://www.some.com/folder/image.jpg

问题
我可以read图像,执行验证然后存储到磁盘,还是需要先上传图像。我将不得不遍历500个图像的列表,并且我不应该使用大文件来阅读cffile action="read"。检查图像文件的正确类型isImage和文件扩展名

的替代方法是什么?

2 个答案:

答案 0 :(得分:5)

我通常使用cfhttp来读取图像并验证我是否拥有它,然后转换为有效的cfimage对象并进行操作。您可以在this question的答案中看到我的流程。

答案 1 :(得分:2)

使用cfimage从URL读取文件。将源设置为该URL。然后,您可以在本地将其写入磁盘。

代码示例:

<cfset imageData = ImageRead("http://tutorial28.learncf.com/img/bgHead.png") />
<cfimage action="write" source="#imageData#" destination="#expandPath('test.png')#" />