正如标题所说 - 我正在尝试使用输入数据重定向回上一页,如下所示:
return Redirect::back()->withInput();
它适用于常规输入,但不适用于文件!这有解决方法吗?因此,重定向后,再次选择上一个文件。
答案 0 :(得分:6)
它无效。
当您在Laravel中重定向某些内容时,它会在Session中存储$ _POST和$ _GET,以便在下一个请求中返回数据。文件有一个特殊的PHP全局变量$ _FILES,因为它们不在内存中,它们存在于磁盘中,只是内存中有关它们的一些信息。
在Session中存储这些文件会花费太多资源,想象一下将它们存储在你存储在数据库中的Session中......是的,Laravel或Symfony可以创建一个层来处理它,看起来很容易看,但看起来很容易就像他们刚决定不这样做。
所以,IMO,如果你在下一个请求中需要它们,将它们移动到临时区域并且Session :: put()关于它们的信息,所以你可以在下一个请求中使用Session :: get()它们。
答案 1 :(得分:1)
如上所述here,没有直接的方法可以做到这一点。一个有价值的解决方案可能是,在上传时保存文件,然后在重定向后使用附加输入字段填充表单,其中包含有关先前上载文件的信息。这样你就可以在服务器端决定使用旧服务器(如果没有上传新文件)或新服务器。
答案 2 :(得分:1)
这可能有效:
return Redirect::back()->with('file', Input::file('file_name');
答案 3 :(得分:1)
如果您使用
之类的表单制作Form::text("name",null);
它会起作用,试试吧:)。
答案 4 :(得分:0)
我会选择java脚本方法,如果输入正常,只需使用java脚本在浏览器中验证输入数据,让他们提交表单。只是一个建议.. !!