2017-12-13 6 views
0

数字とカンマが含まれています私は標準的なHTMLフォームを使っています。イメージだけで、私はのようにフォルダに保存されている私のデバイス上のファイルを持っている

検索回数が少なくなったため、Blobファイルを作成してサーバーにアップロードしました。これは機能します。

255,216,255,224,0,16,74,70,73,70,0,1,1,0,0,1,0,1,0,0,255,219,0,67,0,8,6,6,7,6,5,8,7,7 

TizenのファイルシステムAPIが、私はこのファイルを開くことができます:しかし、問題は、到着時に私のJPEGがが破損し、数字とカンマ(、ソースファイルの技術的、バイト)のスーツが含まれていることですそのバイトを読んでください。これが私の行うことです。だから私は、バイトを読んでBLOBを作成して、私のサーバーにアップロードするには、次のコードを使用します。

var raw = fs.readBytes(1024);      
var blob = new Blob([raw], {type:"image/jpeg"}); 
var formData = new FormData(); 
formData.append('screenCapture', blob); 

$.ajax({ 
    type: 'post', 
    url: myurl, 
    processData: false, 
    contentType: false, 
    data: formData, 
    success: function(data){ 
      ... 

    }, 
    error: function(jqxhr, status, msg){ 
      console.log("ERROR! " + msg); 
      } 
}); 
+0

私はあなたのAjaxリクエストがバイナリrepresantationとしてJSONなどのデータを送信していないと考えられる。この配列から新しいUint8Arrayを作成する

はトリックをしました。 jsonをサーバー上のバイナリ形式に変換する必要があります。また、イメージをBase64形式に変換してから、ワイヤを介して送信することもできます。こうすることで、いくつかの文字セット変換などのためにデータが破損しないことを保証できます。 – treeno

+0

@treenoデータはフォームデータとして送信されます。つまり、作成されたファイルがサーバー側に正しく到着します。 しかし、このblobをimgとしてblueimp loadImageライブラリに追加しようとすると、blobがソースで正しくないことがわかります。 readBytesは正しいバイト配列を作成していないようですね。 – BananasSplitter

答えて

1

私はようやく私のコードで間違っていたものを見つけました。

実際、readBytesはバイトに対応する数値の配列を返しますが、配列はバイト配列としてフォーマットされていません。

var raw = fs.readBytes(1024); 
var byteArray = new Uint8Array(raw); 
var blob = new Blob([byteArray], {type:"image/jpeg"}); 
関連する問題