Невозможно загрузить файл.doc или.docx

Я пытаюсь загрузить файлы 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. Что я делаю не так? Обратите внимание, что я использую версию 1.3.1 ng-file-upload. Не могу перейти на 6.x, но я не думаю, что проблема возникла отсюда.

3 ответа

Решение

Правильные типы MIME следующие:

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

Другие типы MIME формата MS приведены здесь.

Правильные типы MIME для.doc и.docx перечислены как: .doc -> application/msword .docx -> application/vnd.openxmlformats-officedocument.wordprocessingml.document

Таким образом, вы должны добавить эти два MIME-типа в вашу переменную supportFileFormat, и это позволит загружать файлы.doc.

Файлы.docx на самом деле интерпретируются вашим приложением как приложение /zip MIME-типа, поскольку файлы.docx на самом деле представляют собой архивированные файлы XML.

 var supportedFileFormat = ['image/gif', //
                    'image/jpeg', //
                    'image/png', //
                    'image/tiff',//
                    'image/svg+xml', //
                    'application/pdf',//
                    'application/zip',//
                    'application/msword',//
                ];

Замена последних двух строк в вашей переменной SupportFileFormat на приведенные выше должна решить вашу проблему.

Я предполагаю, что используемый вами плагин смотрит на mime-тип:

(скопировано отсюда: что такое правильный тип пантомимы для docx, pptx и т. д.?)


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

Другие вопросы по тегам