Laravel $ request-> file()返回null

2021/01/31 02:21 · php ·  · 0评论

尝试在后端使用Laravel上传文件时遇到麻烦。

问题

Laravel$request->file()方法返回null。

设定

我使用superagent建立了一个AJAX请求,调试了请求,一切似乎都很好。这些Content-Length更改取决于我添加的图像,表明图像已添加到请求中。Content-Type也被设置为multipart/form-data

// request headers
Content-Length:978599
Content-Type:multipart/form-data; 

// request payload
Content-Disposition: form-data; name="files"; filename="item-keymoment.png"
Content-Type: image/png

但是我无法在Laravel中获取文件。使用$request->file('files')return NULL,但是如果我调试$_FILES数组,我注意到我的文件已经上传。

dd($request->file('files'))
// NULL

dd($_FILES);
// array:1 [
//   "files" => array:5 [
//     "name" => "item-keymoment.png"
//     "type" => "image/png"
//     "tmp_name" => "/tmp/phpipbeeM"
//     "error" => 0
//     "size" => 978274
//   ]
// ]

dd($request->files->all())
// []

是什么导致Laravel忽略文件?
Content-Type输入文件不是application/octet-stream

下面已经回答了问题。

您应该添加到表单标签 enctype="multipart/form-data"

例如:

<form method="POST" action="{{route('back.post.new')}}" enctype="multipart/form-data">
.............
</form>

添加它,您可以使用您的自定义请求。

希望能为您提供帮助!

注意,$request我在Controller方法中接收对象是的Instance JsonRequest,它是一个扩展的自定义类(目前为空Illuminate\Http\Request

它实现为:

<?php

namespace App\Http\Requests;

use Illuminate\Http\Request;

class JsonRequest extends Request {
}

但是如果我改变:

// from
use App\Http\Requests\JsonRequest;
public function add_background_image (JsonRequest $request) {
  dd($request->file('files'))
  // NULL
}

// to
use Illuminate\Http\Request;
public function add_background_image (Request $request) {
  dd($request->file('files'))
  // UploadedFile {#266
  //   -test: false
  //   -originalName: "item-keymoment.png"
  //   -mimeType: "image/png"
  //   -size: 978274
  //   -error: 0
  //   ...
  // }
}

我得到所需的输入文件。目前切换实例$request解决了我的问题

但是我不明白为什么/Illuminate\Http\Request用空的类扩展会破坏事情。
有人可以解释吗?

我使用子类的目的Illuminate\Http\Request是为了能够以$requests统一的方式为API请求附加用于处理异常/错误的方法。例如在部署时显示异常消息,但在生产时返回固定消息。

是否有其他/更好/更多的Laravel方式?


我认为只会创建一个JsonController而不是扩展Request。

我只有在服务器上有此问题。图像存储在$_FILES变量中,变量指向php.ini文件中的物理目录确保您对该目录具有正确的权限。

php.ini:

upload_tmp_dir = /Applications/MAMP/tmp/php

本文地址:http://php.askforanswer.com/laravel-request-filefanhuinull.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!