我使用Vue将文件从我的前端上传到Laravel后端。
使用以下代码段上传:
addPost() {
axios.post('api/submitPropertyPhoto?token=' + this.token, this.postFormData)
.then(r => {
console.log(r)
})
.catch(e => {
console.log(e)
}
},
uploadFieldChange(e) {
for(let key in e.target.files) {
this.postFormData.append('images[]', e.target.files[key])
}
}
当我想使用普通的Laravel请求文件助手方法请求文件时,它只返回任何内容,但是当我使用dd($request->files)
时,它会返回下面的详细信息。
FileBag {#68
#parameters: array:1 [
"images" => array:1 [
0 => array:1 [
"name" => UploadedFile {#45
-test: false
-originalName: "error.JPG"
-mimeType: "image/jpeg"
-size: 21806
-error: 0
path: "C:\xampp\tmp"
filename: "php639F.tmp"
basename: "php639F.tmp"
pathname: "C:\xampp\tmp\php639F.tmp"
extension: "tmp"
realPath: "C:\xampp\tmp\php639F.tmp"
aTime: 2018-05-17 04:26:29
mTime: 2018-05-17 04:26:29
cTime: 2018-05-17 04:26:29
inode: 0
size: 21806
perms: 0100666
owner: 0
group: 0
type: "file"
writable: true
readable: true
executable: false
file: true
dir: false
link: false
linkTarget: "C:\xampp\tmp\php639F.tmp"
}
]
]
]
}
我想要实现的目的主要是将文件保存在光盘中,将文件名保存在数据库中。
答案 0 :(得分:1)
在你的控制器上试试这些:
$urls = collect();
foreach ($request->images as $image) {
$path = $image->store('images');
// Store $path to your data base
$urls->merge(Storage::url($path));
}
return response($urls);
然后在vue你可以得到网址:
addPost() {
axios.post('api/submitPropertyPhoto?token=' + this.token,this.postFormData)
.then(r => {
console.log(r.data); // You should get a json of urls
})
.catch(e => {
console.log(e)
}
},