Php 如何使用Laravel临时存储文件?

Php 如何使用Laravel临时存储文件?,php,ajax,laravel-5,Php,Ajax,Laravel 5,使用Laravel 5.2,我正在制作一个上传表单,该表单允许用户选择最多10幅图像,显示它们的预览,然后让用户对它们进行排序,添加更多图像或删除不想上传的图像 使用javascript可以很容易地完成预览的排序和删除,但除此之外,我很难弄清楚如何正确地完成其余的工作。我最初的想法是从输入中获取js文件数组,将其移动到另一个数组,并在用户与图像预览交互后使用该数组,图像预览将使用FileReader显示 提交表单后,我将创建一个FormData对象,删除输入中的当前文件并添加所有有效文件: va

使用
Laravel 5.2
,我正在制作一个上传表单,该表单允许用户选择最多10幅图像,显示它们的预览,然后让用户对它们进行排序,添加更多图像或删除不想上传的图像

使用javascript可以很容易地完成预览的排序和删除,但除此之外,我很难弄清楚如何正确地完成其余的工作。我最初的想法是从输入中获取js文件数组,将其移动到另一个数组,并在用户与图像预览交互后使用该数组,图像预览将使用
FileReader
显示

提交表单后,我将创建一个
FormData
对象,删除输入中的当前文件并添加所有有效文件:

var formdata = new FormData(document.getElementById('upload-form'));
if (formdata.has('pic[]') && validFiles.length) {
   formdata.delete("pic[]");
   var len = validFiles.length;
   for (i = 0; i < len; i++) {
      formdata.append("pic[]", validFiles[i]);
   }

}
var formdata=newformdata(document.getElementById('upload-form');
if(formdata.has('pic[])和&validFiles.length){
formdata.删除(“pic[]”;
var len=有效文件长度;
对于(i=0;i
如果你熟悉js,你会发现这种方法在向后兼容方面有严重的问题,因为
FormData.delete(…)
.append(…)
。has(…)
方法不受旧浏览器(包括Chrome50及以下浏览器或几乎所有IE)的支持

好吧,放弃这个想法。我的第二个想法是做以下工作:

  • 用户选择要添加的图像
  • 使用ajax上传上述图像,并使用Laravel将其临时存储在某处
  • 返回图像预览
  • 让用户使用预览对文件进行重新排序或删除,并跟踪其操作
  • 提交表单后,获取所有其他信息,确定哪些文件将永久存储,哪些文件将被删除并保存
  • 现在我不太清楚该怎么做。我在想,我可以为这些图像创建一个tmp目录,生成某种字符串作为与用户会话相关联的目录名,将文件存储在那里,并使用
    session
    保存目录名

    问题是
    会话
    似乎有一个全局超时,不能设置为在15分钟内过期。我看到的另一个问题是,一旦
    会话
    过期,用户决定不上传图像,他们将永远留在服务器上,因为我找不到一种方法允许我在
    会话
    过期时执行代码

    那么,在Laravel中进行临时文件存储的正确方法是什么? 或者我走错了方向,你能找到更好的方法来完成我的任务吗?


    提前感谢您的建议。

    您的第二个想法似乎是可行的,但稍作修改

    这个怎么样: