Загрузка файлов работает в браузере ПК, но не в веб-браузере Android

Я пытаюсь загрузить файл по ссылке (служба обмена точками), которая хорошо работает в браузере Chrome, но не в веб-просмотре Android.

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

https://github.com/mgks/Os-FileUp

он открывает браузер, но не показывает имя файла, не загружает какой-либо контент и не вызывает службу, но тот же код отлично работает в браузере Chrome (пожалуйста, обратите внимание, что я включил CORS, чтобы проверить его

мой код html и js ниже

Я успешно построил проект Android, поместил свой html-файл и запустил его как apk. другие коды ajax с get и post работают нормально. проблема только с загрузкой файлов

пожалуйста, помогите мне с этой загрузкой файла, с некоторым работоспособным примером. Также в образце

<!DOCTYPE html>
<html>
<body>

    <h1>Sharepoint File upload</h1>

    <form method = "POST" enctype = "multipart/form-data" id = "fileUploadForm">
        <!--<input type = "text" name = "extraField" />--><br /><br />       
        <input type = "file" id = "fileupload" name = "files" /><br /><br />
        <input type = "submit" value = "Submit" id = "btnSubmit" />
    </form>

    <h1></h1>
    <span id = "result"></span>

    <script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    <script>
        $(document).ready(function () {

            $("#btnSubmit").click(function (event) {

                //stop submit the form, we will post it manually.
                event.preventDefault();

                // Get form
              //  var form = $('#fileUploadForm')[0];

                // Create an FormData object
                var data = new FormData();
                data.append("File", $('#fileupload')[0].files[0]);
                // If you want to add an extra field for the FormData
                // data.append("File", form);
                console.info('file', $('#fileupload')[0].files[0]);
                // disabled the submit button
                $("#btnSubmit").prop("disabled", true);

                var _url = "https://my.sharepoint.com/teams/<MyProj>/_api/web/getfolderbyserverrelativeurl(\'/teams/<MyProj>/Project Documents/1264\')/files/add(overwrite=true,url=\'TestUpload1.txt\')"
                $.ajax({
                    type: "POST",
                   // enctype: 'multipart/form-data',
                    headers: {     
                        'Accept': 'application/json;odata=verbose',
                        'processData': false,
                        'Authorization': 'Bearer <key-value>',
                        'Content-Type': 'application/json'
                    },
                    url: _url,
                    data: data,
                    processData: false,
                    contentType: true,
                    cache: false,
                    timeout: 600000,                    
                    success: function (data) {

                        $("#result").text(data);
                        console.info("SUCCESS : ", data);
                        $("#btnSubmit").prop("disabled", false);

                    },
                    error: function (e) {

                        $("#result").text(e.responseText);
                        console.info("ERROR : ", e);
                        $("#btnSubmit").prop("disabled", false);

                    }
                });

            });

        });
    </script>
</body>
</html> 

код Android, тип файла ограничен image/*, но мне нужно загрузить файлы pdf, doc и txt

Проверьте этот ответ stackoverflow.com/a/50463988/4377954

Deˣ 20.07.2019 21:56

Возможный дубликат Загрузка файлов не работает в Android WebView

Deˣ 20.07.2019 21:57

первая ссылка не имеет принятого ответа, вторая ссылка имеет принятый ответ, но относится к первой ссылке! Я много играл, все еще не мог заставить это работать. Он прекрасно работает в браузере Chrome на ноутбуке! попросите пользователей предоставить любые идеи по устранению неполадок, которые заставят его работать! я все еще пытаюсь

user1619015 21.07.2019 06:22
0
3
1 473
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Измените image/* на */* для всех типов файлов или вы можете использовать application/pdf специально для PDF-файлов на эта линия.

Что касается загрузки файлов, вроде все нормально и должно работать. Используете ли вы последнее обновление OS-FileUp? Недавно репозиторий был обновлен множеством исправлений ошибок. ИЛИ попробуйте Умный веб-просмотр, если вам это подходит.

Спасибо, это помогло моему приложению выбрать PDF или текстовые файлы. Я также смог получить успешный ответ на загрузку файла, и файл был показан на сервере. Но файлы были повреждены. Содержимое текстового файла оказалось неопределенным! а пдф файл не открывался. Вышеприведенный HTML-код показывает имя файла по умолчанию (просто выберите кнопку файла), но в веб-просмотре он по-прежнему показывает «файл не выбран», во-вторых, когда я подробно читаю коды в mainActivity, я не вижу никакого кода для обработки других чем изображение или видео, этот код написан только для изображения или видео и не может использоваться для pdf или txt?

user1619015 22.07.2019 09:35

@user1619015 user1619015 все файлы обрабатываются onShowFileChooser() по умолчанию, я считаю, что таможенные обработчики, которые вы нашли для изображений и видео, являются методами создания файлов, если пользователь выбирает камеру / видеокамеру в качестве метода ввода. Вы можете сначала попробовать загрузить файлы на локальный сервер, чтобы убедиться, что эта единственная проблема связана с завершением приложений.

mgks 23.07.2019 05:47

использование SmartWebView решило проблему, поэтому приняло ответ. Но загрузка 600-килобайтного pdf-файла занимает 4-5 минут! нужно посмотреть, как его можно оптимизировать!

user1619015 24.07.2019 17:11

Я не совсем уверен, почему это должно происходить, я посмотрю на это и обновлю, если что-то узнаю.

mgks 24.07.2019 19:05

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