javascript - 使用 Axios 将图像发布到 laravel 仅将 [目标文件] 作为字符串传递
问题描述
我有一个反应应用程序,它是 laravel 应用程序的前端。我正在使用一个简单的图像上传器,它将上传的文件返回到发布路径。在 post 路由的控制器中,请求以字符串而不是实际对象的形式传入。看我的代码。
onUpload = (picture) => {
this.setState({
pictures: this.state.pictures.concat(picture),
});
var curr = this
const formData = new FormData();
formData.append('file',picture)
console.log(picture[0])
axios
.post('/upload-subitem-image', formData, fileHeaders)
.then(function (response) {
const data = response.data
console.log(data)
})
.catch(error => {
console.log(error);
})
}
当我控制我得到的图片对象时
File {name: "test.png", lastModified: 1553443959805, lastModifiedDate: Sun Mar 24 2019 12:12:39 GMT-0400 (Eastern Daylight Time), webkitRelativePath: "", size: 11695, …}
但是在将它传递给 laravel 以尝试获取文件后,当我尝试执行此操作时,它会返回一个字符串。
$data = $request->File();
看起来像
{file:{"[object file]"}
标头如下所示:
const fileHeaders = {
'X-CSRF-TOKEN' : document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
'content-type': 'multipart/form-data',
'Accept': 'application/json',
}
解决方案
从周围的代码来看,看起来你正在处理append
一个数组picture
。
API forFormData
需要一个File
或Blob
用于文件上传,所以对于一个数组,它只是把它变成一个字符串。由于您的数组只有一项,因此它变为[object file]
.
尝试picture[0]
在append
(并确保进行适当的边界检查等)
推荐阅读
- javascript - 在 html 中的学生成绩表中将包含“-”的单元格的颜色更改为黄色
- java - 从 charAt 保存为 int
- karate - 空手道 UI 跨浏览器示例
- php - Amadeus e-Power Web Service - 设置 SOAP 身份验证标头时出现问题
- android - 当我尝试在片段中动态更改 TextView 值时没有任何反应
- ruby-on-rails - 如何从对象数组中选择特定值或在 ruby 或 rails 中返回特定值
- android - 并行运行多个 Firebase TextRecognition 进程
- python - 使用python枚举
- c# - 如何在 CSharpFunctionalExtensions 中正确地将同步和异步方法链接在一起?
- mailgun - MailGun(二进制数据附件)