我需要构建一个允许多个文件上传的表单,并且还允许可重复的表单组。可以重复的表单组包含可以动态添加的上载字段,例如添加另一个文件功能。
我无法弄明白的一件事是,如果他们在请求中嵌入数组中,我就可以访问上传的文件,即Request :: file(' upload');不会工作。
以下是文件输入HTML的示例,您可以看到正在进行的嵌套级别。
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, unicode_literals, print_function
import os
import tarfile
class TarfileWhichRaisesOnEOF(tarfile.TarFile):
def extractall(self, path=".", members=None):
super(TarfileWhichRaisesOnEOF, self).extractall(path, members)
if members is None:
members = self
for tarinfo in members:
if not tarinfo.isfile():
continue
file=os.path.join(path, tarinfo.name)
size_real=os.path.getsize(file)
if size_real!=tarinfo.size:
raise tarfile.ExtractError('Extracting %s: Size does not match. According to tarinfo %s and on disk %s' % (
tarinfo, tarinfo.size, size_real))
为每个新表单组添加请求索引,以添加用户在应用程序上发出的请求列表。
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
我在我的机器上试过这个。
$inputs = Request::all();
var_dump($inputs);
//prints
array (size=2)
'_token' => string 'jpY1dJy5t8' (length=40)
'request' =>
array (size=2)
0 => string 'st2.jpg' (length=7)
1 => string 'st2.jpg' (length=7)
请尝试使用以下内容更新输入字段...
<input class="js-file-input" name="request[0]files[]" type="file" />
<input class="js-file-input" name="request[1]files[]" type="file" />
答案 1 :(得分:0)
只是跟进以防万一有人试图做类似的事情。我已经取得了一些进展,我可以通过提供数组密钥来访问文件。
所以$ file = Request :: file('request')[0] ['files']将返回第一个嵌套文件数组的所有文件,这样我就可以循环并保存它们。我想通过检查每个数组是否包含像hasFile这样的文件应该有效。不是真正感觉到这样做的正确方法,但它看起来是目前唯一的方式。
我需要将文件输入HTML更新为:
<input class="js-file-input" name="request[0][files][]" type="file" />
答案 2 :(得分:0)
访问文件的另一种方法是这样
$files = $request->request[0]['files'];