无法上传.doc或.docx文件

时间:2015-08-13 12:04:12

标签: javascript angularjs ng-file-upload

我正在尝试在我的应用程序中上传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但我不认为这个问题来自这里。

3 个答案:

答案 0 :(得分:3)

正确的MIME类型如下:

.doc  -> application/msword
.docx -> application/vnd.openxmlformats-officedocument.wordprocessingml.document

其他MS格式的MIME类型汇总为here

答案 1 :(得分:2)

.doc和.docx的正确MIME类型列为: .doc - &gt;应用程序/ msword .docx - &gt;应用/ 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变量中的最后两行更改为上述行可以解决您的问题。

答案 2 :(得分:0)

我猜你正在使用的插件正在查看mime-type:

(从这里复制:What is a correct mime type for docx, pptx etc?

.docx application / vnd.openxmlformats-officedocument.wordprocessingml.document