2017-03-08 70 views
0

我有两个脚本如何在Vuejs中发送文件?

首先在Vue的组件:服务器

var data = { 
    cover: myResult[0], // first file 
    file: myResult[1], // second file 
    title: self.title, // first string 
    desc: self.desc // second string 
}; 
self.$http.post('tracks.post', data) 
    .then(res =>{ 
     console.log(data); // 1* 
     console.log(res); // 2* 
}) 

和PHP脚本:

dd(file_get_contents('php://input')); // 3* 
dd($_FILES); // 4* 

DD() - 只是一个功能,看在parametr什么

1 * - 一切都很好,所有字符串和文件都存在:

Object {cover: File, file: File, title: "ada", desc: "asdasd"} 

2 * - 不是所有的好(解释下一个)
3 * - 那里只显示字符串,但文件都消失了:

string(52) "{"cover":{},"file":{},"title":"ada","desc":"asdasd"}"↵

4 * - 在$ _FILES也没有存在的文件:

array(0) {↵}↵

所以,我应该如何发送文件在vuejs?

+0

我把文件从vuejs发送到laravel,希望它也可以在核心php中工作。 http://stackoverflow.com/questions/42579070/internal-server-error-during-file-uploading-in-laravel5-3/42579340 – C2486

回答

0

我不知道如何发送VueJS文件。我所知道的是,一年前我遇到了与angularjs类似的问题。我的解决方案是使用JavaScript FormObject()将数据发送到服务器,而不是仅使用Object()。我也不得不写这看上去像这样

<input data-file id="id_image" name="image" ng-model="museumMap" type="file"> 

myApp.directive('file', function() { 
    return { 
     require:"ngModel", 
     restrict: 'A', 
     link: function($scope, el, attrs, ngModel){ 
      el.bind('change', function(event){ 
       var files = event.target.files; 
       var file = files[0]; 

       ngModel.$setViewValue(file); 
       $scope.$apply(); 
      }); 
     } 
    }; 
}); 

我知道这并不直接回答你的问题的自定义指令,但希望它为您提供了一个起点。编号先尝试使用FormObject()。

0

测试几个小时后,我创办了正确的方式用绳子发布文件:

let data = new FormData(); 
data.append('token', self.$auth.getToken()); 
data.append('file', file); 
data.append('cover', cover); 
data.append('title', self.title); 
data.append('desc', self.desc); 

然后只发送数据usuall。希望它能帮助未来的人。