Lumen 没有收到来自发送的表单数据的任何文件
Lumen does not receive any file from Form Data that was sent
我检查了 chrome Headers 发送的表单数据,看起来像这样:
现在我的 POST 请求中似乎有一个名为 "files" 的图像文件。
现在在 Lumen 的控制器中,我进行以下调试以尝试获取文件:
return response([$request->hasFile('files'), $request->file('files'), $request->get('files')]);
但是我在响应中得到的是:
[true,{},null]
这是我在我的 React 应用程序中提出的请求:
const formData = new FormData();
formData.append("files", this.state.productData[key][0]);
fetch(`${process.env.REACT_APP_API_URL}/products/submit`, {
method: 'POST',
body: formData,
})
有谁知道我为获取图像所做的工作有什么问题吗?
$request->file()
方法 returns Illuminate\Http\UploadedFile
class 的实例并在您的回复中显示为 {}
但您的文件已上传an 在 $request->hasFile()
为 true
时有效,因此您可以像这样检索其属性:
if ($request->hasFile('files')) {
$files = $request->file('files');
return response()->json([
'path' => $files->path(),
'name' => $files->getClientOriginalName(),
'size' => $files->getSize()
]);
}
或者,如果您想以文件形式获得响应:
if ($request->hasFile('files')) {
return response()->file(
$request->file('files')->path()
);
}
请参阅 Laravel 文档 retrieving and storing uploaded files。
注意:我建议使用 files
以外的名称,因为 $request->files
是 Symfony\Component\HttpFoundation\FileBag
class 的一个实例,当您想使用时会导致冲突$request->files
作为 $request->file('files')
的 shorthand。
我检查了 chrome Headers 发送的表单数据,看起来像这样:
现在我的 POST 请求中似乎有一个名为 "files" 的图像文件。
现在在 Lumen 的控制器中,我进行以下调试以尝试获取文件:
return response([$request->hasFile('files'), $request->file('files'), $request->get('files')]);
但是我在响应中得到的是:
[true,{},null]
这是我在我的 React 应用程序中提出的请求:
const formData = new FormData();
formData.append("files", this.state.productData[key][0]);
fetch(`${process.env.REACT_APP_API_URL}/products/submit`, {
method: 'POST',
body: formData,
})
有谁知道我为获取图像所做的工作有什么问题吗?
$request->file()
方法 returns Illuminate\Http\UploadedFile
class 的实例并在您的回复中显示为 {}
但您的文件已上传an 在 $request->hasFile()
为 true
时有效,因此您可以像这样检索其属性:
if ($request->hasFile('files')) {
$files = $request->file('files');
return response()->json([
'path' => $files->path(),
'name' => $files->getClientOriginalName(),
'size' => $files->getSize()
]);
}
或者,如果您想以文件形式获得响应:
if ($request->hasFile('files')) {
return response()->file(
$request->file('files')->path()
);
}
请参阅 Laravel 文档 retrieving and storing uploaded files。
注意:我建议使用 files
以外的名称,因为 $request->files
是 Symfony\Component\HttpFoundation\FileBag
class 的一个实例,当您想使用时会导致冲突$request->files
作为 $request->file('files')
的 shorthand。