Can I use Coldfusions cffile action=“upload” with an image destination url?
-
25-06-2021 - |
题
I need to loop over a list of pathnames and image names and verify that the file exists and is a jpg/png, before changing it's size and storing it to the server.
I want to use this:
<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>
But my problem is, I don't know how to upload a file from a path like
http://www.some.com/folder/image.jpg
Question:
Can I just read
the image, perform my validation and then store to disk or do I need to upload the image first. I will have to loop through a list of 500 images and am reading cffile action="read"
shouldn't be used with large files. What would be an alternative to check image files for correct type, isImage
and file extension?
解决方案
I generally use cfhttp
to read the image and verify that I have it, then convert to a valid cfimage
object and do my manipulations then. You can see my process in the answer to this question.
其他提示
Use cfimage to read the file from a URL. Set the source to be that URL. Then, you can write that to disk locally.
Code example:
<cfset imageData = ImageRead("http://tutorial28.learncf.com/img/bgHead.png") />
<cfimage action="write" source="#imageData#" destination="#expandPath('test.png')#" />