2017-01-06 48 views
1

我想用ng-file-upload上传文件。我大部分都是这样工作的,但是在被调用的API中存在一个错误,这意味着.xlsx文件不能正确上传。其他文件类型可以工作。我被告知,强制内容类型的有效载荷为'application/x-zip-compressed'允许文件上传。不幸的是,我无法弄清楚如何改变这一点。有效载荷是这样的:更改ng文件上传的内容类型

------WebKitFormBoundary9rVv6WxE2BM7vFxz 
Content-Disposition: form-data; name="file[0]"; filename="My Excel File.xlsx" 
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 


------WebKitFormBoundary9rVv6WxE2BM7vFxz-- 

但需要看起来像这样:

------WebKitFormBoundary9rVv6WxE2BM7vFxz 
Content-Disposition: form-data; name="file[0]"; filename="My Excel File.xlsx" 
Content-Type: application/x-zip-compressed 


------WebKitFormBoundary9rVv6WxE2BM7vFxz-- 

任何人都可以用如何使这一变化帮助吗?我试过改变文件对象的类型属性,但是没有做出改变。

,做上传的功能是

$scope.uploadThenRun = function (file) { 
    Upload.upload({ 
     url: 'https://'+ ppService.ppServer+ ':'+ ppService.sslPort + '/jobs/', 
     data: {file: file} 
    }).then(function (resp) { 
     var jobID = resp.data.data.value; 
     $scope.loadParentFormulation(jobID);   
    }, function (resp) { 
    }, function (evt) { 
    }); 

这是从一个div称为像这样:

<div class="my-drop-zone"> 
     <div ngf-drop="uploadThenRun($files)" class="drop-box well" 
     ngf-drag-over-class="'dragover'" ngf-multiple="true">Drop your file here</div> 
</div> 

这里是一个的发送的网络请求。这是需要更改的有效内容中的内容类型。

Network screen grab

希望有人能帮助

+0

对此使用多部分表单数据。 – Krunal

+0

该请求已在使用多部分表单数据。这是我需要更改的有效内容的内容类型。我已经添加了一个屏幕抓取到上面的帖子,希望澄清。 – DCHE

回答

1

您可以在上传这样才更改文件类型:

if (file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') { 
    file = file.slice(0, file.size, "application/x-zip-compressed") 
} 
Upload.upload({..., data: {file: file}, ...}) 

这将使您的新类型,具有相同内容的文件。

+0

太好了 - 谢谢。这已经解决了这个问题。 – DCHE

0

您可以使用头文件定义的内容类型。

$scope.uploadThenRun = function (file) { 
    Upload.upload({ 
     url: 'https://'+ ppService.ppServer+ ':'+ ppService.sslPort + '/jobs/', 
     data: {file: file}, 
     headers : {'Content-Type': 'application/x-zip-compressed'} 
    }).then(function (resp) { 
     var jobID = resp.data.data.value; 
     $scope.loadParentFormulation(jobID);   
    }, function (resp) { 
    }, function (evt) { 
    }); 
+0

感谢您的回复!我试过了,这个头文件选项改变了头文件的请求,它是我需要改变的有效载荷上的内容类型。 – DCHE

相关问题