2

PhoneGap と Intel XDK を使用してクロスプラットフォーム アプリを作成しています。カメラから Azure Blob Storage に画像をアップロードする方法に行き詰まっています。問題なく SAS を生成しています。画像自体をアップロードしようとすると問題が発生します。アップロードしたい画像 (localhost) への URL があります。最初に、XDK が提供するファイル アップロード ユーティリティを次のように使用しようとしました。

intel.xdk.file.uploadToServer(imageUrl, 
   azureUrl + info.resourceName + '?' + info.sasQueryString, 
   "", 
   "image/jpeg", 
   "updateUploadProgress");

これにより、アップロードの進行が開始され (どうやら)、updateUploadProgress が 1 回起動されます。画質を落として黒だけの写真 (可能な限り小さいサイズ) を撮影すると、100% になります (そうしないと、パーセンテージが小さくなります) が、その後は何もなりません。完了のために登録したイベントは発生せず、デバッグ中にエラーは表示されませんでした。私の推測では、それは blob 型と関係があるか、PUT の代わりに POST を使用していたということでした。

次に、単純な XMLHttpRequest を使用しようとしました。いくつかの構成の後、キャンバス オブジェクトの出力を次のようにアップロードすることができました。

var canvas = document.createElement("canvas");
var imageObj = document.createElement('img');

imageObj.src = imageUrl;

canvas.width = imageObj.width;
canvas.height = imageObj.height;
var context = canvas.getContext('2d');
context.drawImage(imageObj, 0, 0);

xhr.send(canvas.toDataURL("image/jpeg").split(',')[1]);

問題は、ほぼ正しいサイズのファイルをアップロードすることですが、ファイルが破損していることです。この方法は、エミュレーターだけで、iPhone アプリでもまったく機能しません。XDK で直接 XMLHttpRequest 呼び出しを使用すると、問題が発生する可能性があると思います。

このファイルを Azure にアップロードする方法について何か提案はありますか?

4

1 に答える 1