【发布时间】: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