何が問題なのでしょうか?ここ数週間、私のコードはiOS上でのみ動作し、Android搭載デバイスでは動作しないのが分かります。私はオプションが不足しているので、任意のアイデアは高く評価されるだろう。Androidで動作しないcordova-plugin-file-transferを使用したファイルアップロード
ファイルを送信するために表示されるAndroidデバイスでは、サーバー上で情報を受け取ることはありません(画像もパラメータの残りの部分も受け付けません)。一方、iOSではすべてうまく動作し、サーバーも正常に動作します。
マイコード:
home.html:
<button ion-button color="dark" (click)="takePhoto()">Open camera </button> <img [src]="imageURL" *ngIf="imageURL" /> <br>imageURL={{imageURL}} <br><button ion-button color="dark" (click)="upload()">Upload</button>
home.ts:
ケース1:
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
imageURL: any;
myInput: string;
cameraUrl: string;
constructor(public navCtrl: NavController) {
}
takePhoto(){
Camera.getPicture().then((imageData) => {
this.imageURL = imageData;
}, (err) => {
console.log(err);
});
}
upload(){
var ft = new Transfer();
var options = {
fileKey: 'file',
fileName: 'filename.jpg',
params:{operatiune:'uploadpoza'}
}
ft.upload(this.imageURL,encodeURI("https://www.myserver.com/test.php"),options)
.then((data) => {
// success
alert("image send:"+this.imageURL);
}, (err) => {
// error
alert("err: "+JSON.stringify(err));
})
}
}
私は二つの方法でエラーをチェックしました:
私には2私のアップロードしたコードのerts: a。成功の場合のメッセージ:alert( "image send:" + this.imageURL); b。エラーメッセージ:alert( "err:" + JSON.stringify(err));
私の場合、最初のメッセージだけが表示されていて、コードが正しく実行されていることに気付いた。
ケース2:
私の電話機をケーブルでラップトップに接続しました。 アプリを起動するには、「Node.js-Command-Prompt」コマンド「ionic run Android」を入力してください。 Chromeブラウザを開き、アドレスバーに "chrome:// inspect /#devices"と入力しました。次に、私のアプリの "INSPECT-option"を選択し、 コンソールをポップアップします。コンソールにエラーは表示されませんでした。 これは正しい方法ですか、別のものを試すべきですか?
「ft.upload」 機能で成功した場合に受け取ったオブジェクト「データ」を印刷しました。結果は次のとおりです。
data.response=
data.responseCode=200
data.bytesSent=411240
これは、情報がサーバーに送信されることを意味します。
もう一つ: - 私はテストの種類を実行しました:HTTPSとHTTP で両方のサーバー に情報を送信する - 私は真と別のテスト trustAllHostsに= trustAllHostsを追加しようとしました=偽
そして、同じ問題が発生するたびにiOSでは動作しますが、アンドロイドでは失敗します
パーフェクト、それが働いています。どうもありがとうございます。この設定は私の問題を解決し、長い一連の検索とテストを終了しました。 – Eventful
そこに行ったこと.. – raj
あなたは私のヒーローです! – Maxime2400