【问题标题】:Coldfusion, using GetHttpRequestData, to Store and Handle FilesColdfusion,使用 GetHttpRequestData,存储和处理文件
【发布时间】:2010-07-25 16:58:52
【问题描述】:

我有一个 JQUERY 文件上传插件,它允许用户将文件上传到 Coldfusion 服务器。该插件以要求我使用 GetHttpRequestData() 获取文件内容的方式将文件提交到服务器。以下是我目前在处理文件数据方面的内容:

<cfparam name="URL.qqfile" type="string">
<cfset x = GetHttpRequestData()>
<cffile action="write" output="#x.content#" file="c:\temp\#URL.qqfile#">

这很有效,很好,但我似乎无法将其带到下一步。

接下来我想做的是: A. 确定文件的扩展名。 B. 如果它是我的应用程序定义的可接受的 ext,(JPG、PNG、PDF、DOC、DOCX 等)将其上传到服务器上的正确目录。然后删除上面的临时文件 C. 如果上传的文件是图片,则使用 CFIMAGE 制作缩略图

如果出现 GetHttpRequestData 问题,我如何通过步骤 A-C 完成上述操作?

谢谢

【问题讨论】:

  • 从您的其他线程来看,该行为似乎取决于浏览器。所以你可能想使用像 这样的测试做正常的 cffile 上传 做其他文件处理...
  • 遗憾的是这仍然不起作用。有任何想法吗?我很想看到一个页面显示如何从 AJAX 上传插件处理 GetHttpRequestData()
  • 为什么一定要使用GetHttpRequestData()?我使用 jQuery 将图像上传到 CF 服务器端并使用 cffile。

标签: coldfusion xmlhttprequest cffile cfimage


【解决方案1】:

一些提示:

  • 通过&lt;cfdump&gt;查看GetHttpRequestData()的结果结构。
  • 通过访问此结构提取必要的标头。 Content-Type 标头通常包含您想知道的内容。您可以使用List functions(即ListLen()ListFirst()ListLast()ListRest() 和适当的分隔符)轻松解析字符串。
  • 始终使用StructKeyExists() 来防止缺少结构部分。永远不要把“通常”似乎在这个结构中的任何东西视为理所当然。
  • 不要盲目相信文件扩展名或 Content-Type 标头。还要查看上传文件的前几个字节,并将它们与白名单进行比较以确认文件类型。
  • 看看&lt;cffile action="upload"&gt;
  • (可选)perfom a drive space test 评估上传的数据是否不会阻塞服务器,或以适合您的其他方式实施限制。
  • 通读&lt;cfimage&gt;的文档。用它来制作缩略图并没有那么那么难。

【讨论】:

  • 制作缩略图一点也不难。
  • +1 到:“不要盲目相信文件扩展名或 Content-Type 标头 ..”。文件上传的其他一些安全提示可以在这里找到petefreitag.com/item/701.cfm
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多