【问题标题】:Processing a file upload with javascript before saving to database in Cakephp在 Cakephp 中保存到数据库之前使用 javascript 处理文件上传
【发布时间】:2013-04-08 00:08:35
【问题描述】:

我有一个包含文件上传的表单。

在将表单内容保存到我的数据库之前,我需要使用 javascript 从文件中提取一些元信息。

如果有的话,最好的方法是什么?

澄清一下:问题不在于提取文件元数据,而是如何访问 $_FILES 数组并使用此数据执行 js 文件,然后最终允许表单提交到服务器。

我目前是如何实现这一目标的:

  1. 我将表单提交给控制器操作
  2. 它保存数据,然后设置一个视图变量,其位置为 成功提交表单后重新渲染初始视图之前上传的文件
  3. 视图检查变量是否已设置,如果已设置,则执行 javascript 基本上提取元现在它可以访问文件所在的位置,并更新数据库 使用 ajax 调用。

上述方法并不理想,因为元数据属于表单首次提交时保存的同一行数据,因此理想情况下,我希望将其包含在初始表单提交中,而不是在表单之后再次呈现页面时包含已提交。对我来说似乎有点肮脏,但我目前还看不到另一种实现方式。

【问题讨论】:

    标签: javascript ajax cakephp file-upload cakephp-2.1


    【解决方案1】:

    我建议使用 ajax (SWFUpload/Uploadify) 上传,然后将数据与处理后的文件数据一起发送回视图。

    您可以上传文件,发出许多回调,最后将渲染的文件数据返回给发出请求的等待javascript函数。

    只要我的两分钱

    【讨论】:

      【解决方案2】:

      什么样的元数据?要回答您的问题,是的,这是可能的,但前提是浏览器支持 File API。这不包括 IE9 和更早版本。有关详细信息,请参阅this MDN article on FileReader。有各种库可以从文件中提取特定类型的元数据。例如,如果您有兴趣从图像文件中解析 EXIF 元数据,则应查看 jQuery-fileExif 之类的内容。

      【讨论】:

      • 对不起,我应该更具体一些。我的问题不是 js 部分。我可以在输入 js 文件时毫无问题地提取我需要的内容。问题是我不确定如何在表单提交过程中实现这一点。即停止表单提交,从 $_FILES 数组中获取 tmp_name,然后在提取元数据的 js 文件完成执行后允许表单提交。有更新的问题。
      猜你喜欢
      • 1970-01-01
      • 2011-02-17
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多