无法上传 .doc 或 .docx 文件
Unable to upload .doc or .docx file
我正在尝试在我的应用程序中上传 doc 或 docx 文件:
观点:
<div class="col-xs-12">
<input type="file" ng-file-select="onFileSelect($files)"/>
<table>
<td ng-repeat="file in files">{{ file.name }} </td>
</table>
</div>
ctrl :
controller: ['$scope', '$modalInstance', 'rule', '$upload', '$resource', function (modalScope, modalInstance, originalRule, $upload, $resource) {
modalScope.isLoaded = true;
modalScope.files = [];
modalScope.onFileSelect = function ($files) {
var maxSizeString = '10 Mo';
var maxSizeValue = 10 * 1024 * 1024; // 10Mo
var supportedFileFormat = ['image/gif', //
'image/jpeg', //
'image/png', //
'image/tiff',//
'image/svg+xml', //
'application/pdf',//
'application/doc',//
'application/docx',//
];
$.each($files, function (index, file) {
if (_.contains(supportedFileFormat, file.type)) {
if (file.size > maxSizeValue) { //10Mo
modalScope.fileUploaded = false;
} else {
modalScope.fileUploaded = true;
modalScope.files.push(file);
}
} else {
modalScope.fileUploaded = false;
}
});
};
我可以上传图片或 .pdf,但不能上传 .doc 或 .docx..
我究竟做错了什么?
请注意,我使用的是 ng-file-upload 的 1.3.1 版本。无法升级到 6.x,但我不认为问题出在此处。
正确的 MIME 类型如下:
.doc -> application/msword
.docx -> application/vnd.openxmlformats-officedocument.wordprocessingml.document
总结了其他 MS 格式的 MIME 类型here。
我猜您使用的插件正在查看 mime 类型:
(从这里复制:What is a correct mime type for docx, pptx etc?)
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.doc 和 .docx 的正确 MIME 类型如下:
.doc -> application/msword
.docx -> application/vnd.openxmlformats-officedocument.wordprocessingml.document
所以您应该将这两种 MIME 类型添加到您的 supportedFileFormat 变量中,这将允许上传 .doc 文件。
.docx 文件实际上被您的应用程序解释为 MIME 类型 application/zip,因为 .docx 文件实际上压缩了 XML 个文件。
var supportedFileFormat = ['image/gif', //
'image/jpeg', //
'image/png', //
'image/tiff',//
'image/svg+xml', //
'application/pdf',//
'application/zip',//
'application/msword',//
];
将 supportedFileFormat 变量中的最后两行更改为上面的行应该可以解决您的问题。
我正在尝试在我的应用程序中上传 doc 或 docx 文件:
观点:
<div class="col-xs-12">
<input type="file" ng-file-select="onFileSelect($files)"/>
<table>
<td ng-repeat="file in files">{{ file.name }} </td>
</table>
</div>
ctrl :
controller: ['$scope', '$modalInstance', 'rule', '$upload', '$resource', function (modalScope, modalInstance, originalRule, $upload, $resource) {
modalScope.isLoaded = true;
modalScope.files = [];
modalScope.onFileSelect = function ($files) {
var maxSizeString = '10 Mo';
var maxSizeValue = 10 * 1024 * 1024; // 10Mo
var supportedFileFormat = ['image/gif', //
'image/jpeg', //
'image/png', //
'image/tiff',//
'image/svg+xml', //
'application/pdf',//
'application/doc',//
'application/docx',//
];
$.each($files, function (index, file) {
if (_.contains(supportedFileFormat, file.type)) {
if (file.size > maxSizeValue) { //10Mo
modalScope.fileUploaded = false;
} else {
modalScope.fileUploaded = true;
modalScope.files.push(file);
}
} else {
modalScope.fileUploaded = false;
}
});
};
我可以上传图片或 .pdf,但不能上传 .doc 或 .docx.. 我究竟做错了什么? 请注意,我使用的是 ng-file-upload 的 1.3.1 版本。无法升级到 6.x,但我不认为问题出在此处。
正确的 MIME 类型如下:
.doc -> application/msword
.docx -> application/vnd.openxmlformats-officedocument.wordprocessingml.document
总结了其他 MS 格式的 MIME 类型here。
我猜您使用的插件正在查看 mime 类型:
(从这里复制:What is a correct mime type for docx, pptx etc?)
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.doc 和 .docx 的正确 MIME 类型如下: .doc -> application/msword .docx -> application/vnd.openxmlformats-officedocument.wordprocessingml.document
所以您应该将这两种 MIME 类型添加到您的 supportedFileFormat 变量中,这将允许上传 .doc 文件。
.docx 文件实际上被您的应用程序解释为 MIME 类型 application/zip,因为 .docx 文件实际上压缩了 XML 个文件。
var supportedFileFormat = ['image/gif', //
'image/jpeg', //
'image/png', //
'image/tiff',//
'image/svg+xml', //
'application/pdf',//
'application/zip',//
'application/msword',//
];
将 supportedFileFormat 变量中的最后两行更改为上面的行应该可以解决您的问题。