【问题标题】:Get all files in a foreach loop in Laravel在 Laravel 的 foreach 循环中获取所有文件
【发布时间】:2015-06-18 07:31:43
【问题描述】:

我有一些<input type="file"> 是由jQuery 动态生成的。 这意味着每个inputname attribute 也是动态生成的,它是一个数字,每次在DOM 中出现一个新的input 时就加1。

我需要foreach loop 之类的东西来获取我的php 中的所有输入。 我尝试上传 1 个文件,但我将 3 个 inputs 留空,因为我的输入是连续的,我只想上传一个图像而不是 4 个。我循环浏览了这个 $all = Input::file();var_dump 响应是这样的

NULL object(Symfony\Component\HttpFoundation\File\UploadedFile)#9 (7) { ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> bool(false) ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> string(10) "index.jpeg" ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> string(10) "image/jpeg" ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> int(9408) ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> int(0) ["pathName":"SplFileInfo":private]=> string(25) "/opt/lampp/temp/phpSVn3Tb" ["fileName":"SplFileInfo":private]=> string(9) "phpSVn3Tb" } NULL NULL

我知道我的问题有点难以理解,但我找不到更好的方法来解释这个问题。

编辑: 这些是我的默认输入:

<div class="row">
<input type="file" name="1">
<input type="file" name="2">
<input type="file" name="3">
<input type="file" name="4">
</div

当用户按下按钮时,jQuery 追加

<div class="row">
<input type="file" name="5">
<input type="file" name="6">
<input type="file" name="7">
<input type="file" name="8">
</div>

每次按下按钮时,也是如此

<div class="row">
<input type="file" name="9">
<input type="file" name="10">
<input type="file" name="11">
<input type="file" name="12">
</div

然后在php 中,我需要获取所有具有值的输入。

我所做的是:

$all = Input::all()
foreach ($all as $one => $two) 
   var_dump($two);
}

【问题讨论】:

  • 请添加相关代码。
  • 请使用

标签: php jquery laravel


【解决方案1】:

您需要为多个文件上传创建一个表单:

{!! Form::open(array('url'=>'url_to_controller','method'=>'POST', 'files'=>true)) !!}

并且您的所有文件都应该有一个特定的上传名称,如下所示:

{!! Form::file('files[]', array('multiple'=>true)) !!}

然后你就可以使用你的控制器了:

class UploadController extends Controller {
   public function store() {

   $files = Input::file('files');

并循环遍历所有文件

 foreach($files as $file) {
   ....

【讨论】:

  • 看起来不错,但输入的names 是动态生成的数字。我能为此做些什么?
  • 为什么?如果您需要多个文件上传,所有“文件”都应该有一个数组作为“名称” - >就像文件[],而不是“文件1”,“文件2”,“文件3”
  • 否则你可以在循环中使用 -> if (Input::hasFile('file."$i'")) { .... - 但我完全建议在这里使用数组
猜你喜欢
  • 1970-01-01
  • 2016-04-29
  • 2020-06-26
  • 2021-11-02
  • 2021-04-24
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多