【问题标题】:Laravel + vue.js file upload putLaravel + vue.js 文件上传 put
【发布时间】:2017-03-05 12:04:42
【问题描述】:

我已经像这样使用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);
        }

但是当我尝试更新这样的文件时(提出请求):

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);
            });
    }

【问题讨论】:

    标签: javascript php laravel vue.js form-data


    【解决方案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
    

    【讨论】:

    • 感谢您的帮助。我正在使用form data,所以我必须这样做:form.append('_method', 'PUT');
    猜你喜欢
    • 1970-01-01
    • 2016-09-01
    • 2020-04-06
    • 2016-08-22
    • 2016-02-22
    • 2019-05-09
    • 2011-11-02
    • 2012-04-04
    • 1970-01-01
    相关资源
    最近更新 更多