更改 ng 文件上传的内容类型
Change Content-Type for ng file upload
我正在尝试使用 ng-file-upload 上传文件。我大部分时间都在使用此功能,但是正在调用的 API 中存在一个错误,这意味着 .xlsx 文件无法正确上传。其他文件类型也可以。我被告知强制负载中的 Content-Type 为 'application/x-zip-compressed' 允许文件上传。不幸的是,我不知道如何改变它。有效负载如下所示:
------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>
这是发送的网络请求。需要更改的是负载中的内容类型。
希望有人能帮忙
您可以使用 headers 定义 Content-type。
$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) {
});
您可以像这样在上传前更改文件类型:
if (file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
file = file.slice(0, file.size, "application/x-zip-compressed")
}
Upload.upload({..., data: {file: file}, ...})
这将使您的文件成为具有相同内容的新类型。
我正在尝试使用 ng-file-upload 上传文件。我大部分时间都在使用此功能,但是正在调用的 API 中存在一个错误,这意味着 .xlsx 文件无法正确上传。其他文件类型也可以。我被告知强制负载中的 Content-Type 为 'application/x-zip-compressed' 允许文件上传。不幸的是,我不知道如何改变它。有效负载如下所示:
------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>
这是发送的网络请求。需要更改的是负载中的内容类型。
希望有人能帮忙
您可以使用 headers 定义 Content-type。
$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) {
});
您可以像这样在上传前更改文件类型:
if (file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
file = file.slice(0, file.size, "application/x-zip-compressed")
}
Upload.upload({..., data: {file: file}, ...})
这将使您的文件成为具有相同内容的新类型。