vuejsとaxiosを使用して複数の画像をアップロードしようとしていますが、サーバー側で空のオブジェクトを取得しています。ヘッダーにmultipart/form-dataを追加しましたが、まだ空のオブジェクトです。
_submitFiles() {
/*
Initialize the form data
*/
let formData = new FormData();
/*
Iteate over any file sent over appending the files
to the form data.
*/
for( var i = 0; i < this.files.length; i++ ){
let file = this.files[i];
console.log(file);
formData.append('files[' + i + ']', file);
}
/*`enter code here`
Make the request to the POST /file-drag-drop URL
*/
axios.post( '/fileupload',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
},
}
).then(function(){
})
.catch(function(){
});
},
_
HTML:
_<form method="post" action="#" id="" enctype="multipart/form-data">
<div class="form-group files text-center" ref="fileform">
<input type="file" multiple="multiple">
<span id='val'></span>
<a class="btn" @click="submitFiles()" id='button'>Upload Photo</a>
<h6>DRAG & DROP FILE HERE</h6>
</div>
_
私のサーバーサイドコード:
_class FileSettingsController extends Controller
{
public function upload(Request $request){
return $request->all();
}
}
_
出力:
_{files: [{}]}
files: [{}]
0: {}
_
Console.log()の結果:File(2838972) {name: "540340.jpg", lastModified: 1525262356769, lastModifiedDate: Wed May 02 2018 17:29:16 GMT+0530 (India Standard Time), webkitRelativePath: "", size: 2838972, …}
$refs
の使用を忘れました。入力にref
を追加します。
<input type="file" ref="file" multiple="multiple">
次に、次のようにファイルにアクセスします。
submitFiles() {
let formData = new FormData();
for( var i = 0; i < this.$refs.file.files.length; i++ ){
let file = this.$refs.file.files[i];
console.log(file);
formData.append('files[' + i + ']', file);
}
axios.post( '/fileupload', formData, {
headers: {
'Content-Type': 'multipart/form-data'
},
}
).then(function(){
})
.catch(function(){
});
},
これはうまくいくはずです。
「データを一緒に送信するにはどうすればよいですか」と思っている人がいる場合は、次のようにします。
formData.append('name[' + this.name + ']', name);
formData.getAll('files', 'name');