【问题标题】:Posting file to PHP $_FILES from localStorage从 localStorage 将文件发布到 PHP $_FILES
【发布时间】:2013-12-07 18:21:51
【问题描述】:

很难找到一个明确的答案,我 95% 确定我想要实现的目标是不可能的,但这里是:

正面:
我有一个multipart/form-data 上传表单。用户选择一个文件,但必须先登录才能发布表单。用户可以通过 Twitter 登录。如果他在选择文件后这样做,由于与 Twitter 之间的重定向,文件输入将为空。

返回:
我有一个 PHP 脚本使用 $_FILES 数组将上传的文件移动到其最终目的地。 (解决我的问题的方法是在重定向到 Twitter 之前将文件保存到临时文件夹,但我目前无法设置)。

问题:
我可以使用 FileSystem API(至少在现代浏览器中)将选定的文件存储在 localStorage 中。但我显然不能把它放回输入元素中。现在我不知所措:有什么办法可以将该文件从我的 localStorage 获取到 PHP $_FILES 数组中?

【问题讨论】:

  • 可以在上传选项前强制登录吗?
  • 如果您真的想走这条路,您必须将文件作为数据 URI 存储在 localStorage 中,然后将其拉出,然后将数据 URI 发送到您的服务器,或者转换数据 URI 到 blob 并发送。但是,localStorage 空间非常有限,因此可能根本不是解决您问题的好方法。 @FlashThunder 有正确的答案,恕我直言。
  • ^^^ 如果你真的想这样做,你可以继续提交表单,使用move_uploaded_file()将文件上传到临时文件夹(不是本地存储),然后登录名使用rename()....将文件保存到新位置。
  • @ao 我可以先强制登录,但这意味着失去一些用户体验优势(这是一个“分享”的事情,如果用户已经选择了一张照片等,他倾向于完成他的帖子。) .我在帖子中提到的临时文件夹目前不是一个选项。
  • @ray-nicholus 但这意味着我不能使用 $_FILES[...]["tmp_name"],对吧?必须使用 base64_decode 服务器端之类的东西并以不同方式处理文件?

标签: javascript php local-storage filereader


【解决方案1】:

通过 ajax 登录 Twitter。这样,您将停留在当前页面上,并且文件输入将保持填充状态。

【讨论】:

  • 嗯,这个想法不错。 Twitter 有一个“授权应用程序”屏幕,用户需要点击它,但我可能会想出一些办法。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多