Загрузка файлов CSV не работает со Struts2

У меня проблема, когда я загружаю файл csv с помощью веб-страницы jsp. Я могу загружать много файлов с помощью своего приложения Struts2. Я использую Struts 2.5.20 и могу загружать все типы Mime в разрешенные типы, кроме text/csv.

    <action name="uploadDocuments" class="UploadDocumentsAction" method="uploadDocuments">
        
        <interceptor-ref name="fileUpload">
            <param name="maximumSize">5242880</param>
            <param name="allowedTypes">image/jpeg,
                image/jpeg2000,
                image/png,
                image/gif,
                image/bmp,
                image/tiff,
                image/apng,
                text/plain,
                text/csv,
                application/pdf,
                application/msword, 
                application/vnd.openxmlformats-officedocument.wordprocessingml.document</param>
        </interceptor-ref> 
        <interceptor-ref name="defaultStack"></interceptor-ref>
          
        <result name="success" type="stream">
            <param name="contentType">text/html</param>  
            <param name="inputName">stream</param>                     
        </result>
    </action>

С помощью Jquery Ajax я вызываю действие, и в случае успеха показываю успешную загрузку файла, в противном случае предупреждение проверяет расширения разрешенных типов файлов...

Когда я пытаюсь загрузить CSV-файл, у меня появляется предупреждающее сообщение. Я не понимаю, потому что не работает только файл csv, все остальные файлы в разрешенных типах работают нормально.

Я поставил точку останова в своем действии. Если я попытаюсь передать файл csv в код Java, когда я выберу другие файлы формата, он пройдет.

Спасибо


person user1361416    schedule 17.07.2020    source источник
comment
Использовали не тот тип мины?   -  person Roman C    schedule 18.07.2020
comment
Я также использовал application/csv, но это не сработало. Спасибо   -  person user1361416    schedule 19.07.2020
comment
Вы использовали тип MIME, чтобы разрешить перехватчику загрузки файлов загружать файл, но конкретная ошибка не связана с ним. Чтобы определить проблему, вам необходимо предоставить более подробную информацию, относящуюся к вашему вопросу.   -  person Roman C    schedule 20.07.2020
comment
Я добавил application/csv,application/x-csv,text/csv, text/comma-separated-values,text/x-comma-separated-values,text/tab-separated-values, я не могу загружать только файлы с расширением . csv, я помещаю breakonpoin в MyAction, но когда я выбираю csv, он не проходит в Java-коде, я могу отлаживать только браузер javascript и вижу 404 (не найдено) с строкой uploadDocuments.do $.ajax моего файла js. У меня нет ошибок в коде Java, нет исключений   -  person user1361416    schedule 20.07.2020
comment
Проверка с помощью браузера. Я вижу ‹html›‹head›‹title›Error‹/title›‹/head›‹body›Нет результата для действия myPackage.UploadDocumentsAction и ввода результатов‹/body›‹/html›   -  person user1361416    schedule 20.07.2020
comment
Если вы не можете получить доступ к коду своего метода действия, значит, что-то не так происходит до того, как ваше действие должно вызываться. Чтобы узнать больше об ошибке, см. этот ответ.   -  person Roman C    schedule 21.07.2020
comment
Привет Роман, спасибо, я не использую Validation Interceptor. Если я перемещаю порядок перехватчика в теге действия, defaultStack перед fileUpload, он работает с загрузкой csv, но я могу загружать все типы файлов. разрешенные типы не работают тогда   -  person user1361416    schedule 21.07.2020
comment
Решается, наверное. Я пробую пример Mkyong mkyong.com/struts2/struts-2-file- upload-example, я обнаружил, что тип содержимого CSV-файла — это application/vnd.ms-excel . Но мне не нужен этот тип mime, потому что он включает файлы xls, xlt, xla... Я хочу загружать только изображения, файлы pdf или текст. Спасибо   -  person user1361416    schedule 24.07.2020
comment
Я сомневаюсь, что вы реализовали какую-либо логику проверки в своем приложении для загрузки файлов. Следовательно, у вас неправильная конфигурация перехватчиков.   -  person Roman C    schedule 25.07.2020
comment
Я пробую пример Mkyong со стойками 2.5.20, а также он не работает с файлами csv. Тип содержимого, напечатанного на странице, — application/vnd.ms-excel. В моем веб-приложении есть правильные перехватчики. Спасибо   -  person user1361416    schedule 26.07.2020
comment
Этот пример должен работать с версией Struts2, использовавшейся на момент написания этого примера. Поскольку вы не разместили весь код, необходимый для воспроизведения ошибки, невозможно угадать решение этой проблемы. Другая попытка - исправить параметры запроса, как в этом ответе.   -  person Roman C    schedule 27.07.2020
comment
Привет, Роман, я думаю, что это ошибка Strut2. Я пробую другой пример journaldev.com/2192/struts-2-file- пример загрузки, с правильными библиотеками, struts 2.5.20 common-fileUpload 1.4, commons-io 2.6. У меня такая же ошибка Content-Type не разрешен: файл SampleCSVFile_2kb.csv upload_2bd1107f_d6ad_4332_819f_91353f1b5e9e_00000002.tmp application/vnd.ms-excel , когда я выбираю файл Csv   -  person user1361416    schedule 27.07.2020
comment
‹struts› ‹constant name=struts.multipart.maxSize value=104857600 /› ‹package name=user namespace=/ extends=struts-default› ‹action name=upload› ‹result›/UploadFile.jsp‹/result› ‹/ action› ‹имя действия=UploadFile class=com.journaldev.struts2.actions.UploadFileAction› ‹имя параметра=filesPath›myfiles‹/param› ‹имя результата=success›/UploadFileSuccess.jsp‹/result› ‹имя результата=input› /UploadFile.jsp‹/результат›   -  person user1361416    schedule 27.07.2020
comment
‹interceptor-ref name=DefaultStack› ‹param name=fileUpload.maximumSize›10485760‹/param› ‹param name=fileUpload.allowedTypes›text/plain,image/jpeg,application/csv,application/x-csv,text/csv ,текст/значения, разделенные запятыми,текст/x-значения, разделенные запятыми,текст/значения, разделенные табуляцией,application/pdf,‹/param› ‹/interceptor-ref› ‹/action›   -  person user1361416    schedule 27.07.2020
comment
‹action name=uploadMultiple› ‹result›/UploadMultipleFile.jsp‹/result› ‹/action› ‹action name=UploadMultipleFile class=com.journaldev.struts2.actions.UploadMultipleFileAction› ‹param name=filesPath›myfiles‹/param› ‹ имя результата=успех›/UploadMultipleFileSuccess.jsp‹/результат› ‹имя результата=ввод›/UploadMultipleFile.jsp‹/результат› ‹interceptor-ref name=defaultStack› ‹имя параметра=fileUpload.maximumSize›10485760‹/param› ‹param name=fileUpload.allowedTypes›text/plain,image/jpeg‹/param› ‹/interceptor-ref› ‹/action›   -  person user1361416    schedule 27.07.2020