Я пытаюсь отправить файл изображения из библиотеки фотографий телефона Android на мой веб-сервис azure, который затем сохранит файл на лазурном файловый ресурс. При запуске кода на моем устройстве ошибка всегда вызывается с кодом 1 FILE_NOT_FOUND_ERR. Похоже, что изображение Uri является правильным, поскольку оно отображается в теге изображения в HTML.Плагин переноса файлов для Кордовы возвращает код ошибки 1 FILE_NOT_FOUND_ERR, а также 500 ошибок внутреннего сервера
Это мой текущий Javascript код:
document.getElementById("btnSelectPhoto").onclick = function() {
navigator.camera.getPicture(onSuccess, null, { quality: 50, correctOrientation: true, destinationType: Camera.DestinationType.FILE_URI, encodingType: navigator.camera.EncodingType.JPEG, sourceType: navigator.camera.PictureSourceType.SAVEDPHOTOALBUM });
function onSuccess(imageUrl) {
var lastPhotoContainer = document.getElementById("lastPhoto");
filename = (imageUrl.split('/').pop().split('#')[0].split('?')[0]);
lastPhotoContainer.src = imageUrl;
document.getElementById("btnSendMedia").onclick = function() {;
var sourceURL = document.getElementById("lastPhoto").getAttribute("src");
var uri = "http://xxx/api/xx/xx";
var win = function (r) {
alert('upload complete');
}
var fail = function (error) {
alert('error');
alert(error.code + " !!!! " + error.target + " !!!! " + error.source);
alert(error.http_status + " !!!! " + error.body + " !!!! " + error.exception)
}
var options = new FileUploadOptions();
options.chunkedMode = false;
options.filekey = "photoPath";
options.filename = filename;
options.mimetype = "image/jpeg";
options.httpMethod = "POST";
options.headers = { Connection: "close", Accept: 'application/json' };
var ft = new FileTransfer();
ft.upload(sourceURL, encodeURI(uri), win, fail, options, true);
};
}
};
Мой HTML выглядит следующим образом
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<title></title>
<link href="lib/ionic/css/ionic.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<script src="js/platformOverrides.js"></script>
<script src="cordova.js"></script>
<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="js/ng-cordova.min.js"></script>
<script src="js/app.js"></script>
<link rel="stylesheet" href="css/jquery.mobile-1.4.5.min.css" />
</head>
<body ng-app="app">
<script src="scripts/jquery-3.1.1.min.js"></script>
<script src="scripts/jquery.mobile-1.4.5.min.js"></script>
<script src="https://zumo.blob.core.windows.net/sdk/azure-mobile-apps-client.min.js"></script>
<script src="bower_components/angular-base64/angular-base64.js"></script>
<ion-pane>
<ion-header-bar class="bar bar-dark">
<h1 class="title">Welcome to the ABC News App</h1>
</ion-header-bar>
<ion-content class="bar has-header" id="content">
<img id="lastPhoto" src=""/>
</ion-content>
<div class="bar bar-footer">
<div class="button-bar" id="uploadBar">
<a class="button button-royal" id="btnSelectPhoto">Select Media</a>
<a class="button button-calm" id="btnTakePhoto">Take Photo or Video</a>
</div>
<div class="button-bar" style="display:none" id="selectBar">
<a class="button button-balanced" id="btnSendMedia">Send Media</a>
<a class="button button-assertive" id="btnCancel">Cancel</a>
</div>
</div>
</ion-pane>
</body>
</html>
C# лазурной код Web API, что я пытаюсь достичь является:
[EnableCors(origins: "*", headers: "*", methods: "*")]
[WebMethod]
[System.Web.Http.AcceptVerbs("GET", "POST")]
public void PostMedia()
{
HttpPostedFile f = HttpContext.Current.Request.Files["photoPath"];
//Logic that will be implemented when file received
}
Когда я запускаю код на своем устройстве Android, sourceUrl является file: /// storage/emulated/0/A ndroid/data/io.cordova.myapp5705a5/cache/images.jpeg? 1485926439023, который выглядит как правильный путь (я также пытался жестко кодировать путь в эмуляторе Android, который также не работал), но я продолжаю получать код ошибки 1 означает, что файл не найден, а также ошибка внутреннего внутреннего сервера 500. Есть ли проблема с API или javascript-кодом?
Спасибо за ваш ответ! Я изменил эту часть кода, но по-прежнему я получаю тот же код ошибки. 1 Файл не найден. Есть ли другие причины, по которым я получаю эту ошибку? – Tess
Где вы получили эту ошибку (в функции ** fail **?)? –
Я действительно понял вопрос. Я добавил в свой веб-конфигуратор, который дал мне подробное объяснение моей ошибки, которая произошла с моим веб-Api. –
Tess