アンドロイド携帯電話の写真ライブラリから画像を晴れたWebサービスに送信しようとしています。ファイル共有。 デバイス上でコードを実行すると、エラーは常にコード1 FILE_NOT_FOUND_ERRで呼び出されます。画像Uriは、HTMLの画像タグに表示されるので正しいと思われます。ファイル転送プラグインfor Cordovaがエラーコード1 FILE_NOT_FOUND_ERRと内部サーバエラー5002を返します
私の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#紺碧ウェブAPIコードのように見える
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);
};
}
};
は次のとおりです:
[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
}
これが私の現在のjavascriptのコードです
私のアンドロイドデバイスでコードを実行すると、sourceUrlはfile:/// storage/emulated/0/A ndroid/data/io.cordova.myapp5705a5/cache/images.jpeg?1485926439023これは正しいパスのようです(私もアンドロイドエミュレータのパスをハードコードしようとしましたが動作しませんでした)。エラーコード1は、ファイルが見つからないことを意味し、500の内部サーバーエラーを意味します。 APIまたはjavascriptコードに問題はありますか?
ありがとう!私はコードのその部分を変更しましたが、私はまだ同じエラーコード1 File Not Foundを取得しているようです。このエラーが発生する理由が他にありますか? – Tess
このエラーはどこで発生しましたか(**失敗**機能?) –
私は実際に問題を理解しました。私は自分のウェブの設定でを追加しました。私のエラーの詳細な説明は私のウェブAPIにありました。 –
Tess