Я пытаюсь загрузить файл по ссылке (служба обмена точками), которая хорошо работает в браузере 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
Возможный дубликат Загрузка файлов не работает в Android WebView
первая ссылка не имеет принятого ответа, вторая ссылка имеет принятый ответ, но относится к первой ссылке! Я много играл, все еще не мог заставить это работать. Он прекрасно работает в браузере Chrome на ноутбуке! попросите пользователей предоставить любые идеи по устранению неполадок, которые заставят его работать! я все еще пытаюсь
Измените image/* на */* для всех типов файлов или вы можете использовать application/pdf специально для PDF-файлов на эта линия.
Что касается загрузки файлов, вроде все нормально и должно работать. Используете ли вы последнее обновление OS-FileUp? Недавно репозиторий был обновлен множеством исправлений ошибок. ИЛИ попробуйте Умный веб-просмотр, если вам это подходит.
Спасибо, это помогло моему приложению выбрать PDF или текстовые файлы. Я также смог получить успешный ответ на загрузку файла, и файл был показан на сервере. Но файлы были повреждены. Содержимое текстового файла оказалось неопределенным! а пдф файл не открывался. Вышеприведенный HTML-код показывает имя файла по умолчанию (просто выберите кнопку файла), но в веб-просмотре он по-прежнему показывает «файл не выбран», во-вторых, когда я подробно читаю коды в mainActivity, я не вижу никакого кода для обработки других чем изображение или видео, этот код написан только для изображения или видео и не может использоваться для pdf или txt?
@user1619015 user1619015 все файлы обрабатываются onShowFileChooser() по умолчанию, я считаю, что таможенные обработчики, которые вы нашли для изображений и видео, являются методами создания файлов, если пользователь выбирает камеру / видеокамеру в качестве метода ввода. Вы можете сначала попробовать загрузить файлы на локальный сервер, чтобы убедиться, что эта единственная проблема связана с завершением приложений.
использование SmartWebView решило проблему, поэтому приняло ответ. Но загрузка 600-килобайтного pdf-файла занимает 4-5 минут! нужно посмотреть, как его можно оптимизировать!
Я не совсем уверен, почему это должно происходить, я посмотрю на это и обновлю, если что-то узнаю.
Проверьте этот ответ stackoverflow.com/a/50463988/4377954