我已经成功上传了vue.js 1.0
这样的文件(发布请求):
store () {
this.storingMessage = true;
var form = new FormData();
form.append('subject', this.message.subject);
form.append('message', this.message.message);
form.append('topic_id', this.message.topic_id);
for(var key in this.message.attachment) {
form.append('attachment[' + key + ']', this.message.attachment[key]);
}
MessageService.store(this, form);
}
但是当我尝试更新这样的文件时(put request):
update () {
this.updatingMessage = true;
var form = new FormData();
form.append('subject', this.message.subject);
form.append('message', this.message.message);
form.append('slug', this.message.slug);
for(var key in this.message.attachment) {
form.append('attachment[' + key + ']', this.message.attachment[key]);
}
MessageService.update(this, form);
}
在我的控制器中,dd($request->all())
结果为[]
。
那么为什么它不能用put
????!?!?!?
服务
store (context, form) {
return Vue.http.post('/api/message', form)
.then(({data}) => {
context.success();
}, (error) => {
context.error(error.data);
});
},
update (context, form) {
return Vue.http.put('/api/message/' + form.get('slug'), form)
.then(({data}) => {
context.success();
}, (error) => {
context.error(error.data);
});
}
答案 0 :(得分:1)
根据Laracast Discussion,使用put方法和formData对象时,似乎存在一个问题,一种方法是避免使用方法欺骗。
请在您的更新方法
中尝试此操作let data = { _method : 'PATCH' , form : form}
return Vue.http.post('/api/message/' + form.get('slug'), data)
.then(({data}) => {
context.success();
}, (error) => {
context.error(error.data);
});
在这种情况下,您的控制器中的数据将以form
显示
$request->form