データ転送に HTML フォームを使用するサイト用のモバイル アプリケーションを開発しようとしています。現在、私は Android 向けに開発していますが、このアプリは iOS と WP7 にもあるはずです (そのため、PhoneGap を選択しました)。
私が使用しているフォームには<input type="file">
タグがあり、サーバー部分にアクセスできないため、画像自体を渡す必要があります。
私が試したこと:
- タグをフォーム上でそのまま使用する
<input type="file">
には、ファイルピッカー ダイアログを開きません。 Base64 形式の画像を取得するために PhoneGap メソッドを使用し、それをフォーム パラメータに添付しますが、サーバーはそれらを有効なファイルとして認識しません。これを達成するために、私は次の関数を使用しています:
function fileUpload (url, fileData, fileName) { var fileSize = fileData.length, boundary = "12352134", xhr = new XMLHttpRequest(); xhr.open("POST", url, true); // simulate a file MIME POST request. xhr.setRequestHeader("Content-Type", "multipart/form-data, boundary="+boundary); xhr.setRequestHeader("Content-Length", fileSize); var body = "--" + boundary + "\r\n"; body += 'Content-Disposition: form-data; name="imagen"; filename="' + fileName + '"\r\n'; body += "Content-Type: image/jpeg\r\n\r\n"; body += fileData + "\r\n"; body += "--" + boundary + "--"; xhr.send(body); return true;
}
フォームにアクセスできず、すべてのデータが統合されている必要があるため、画像だけを渡すために Ajax を使用することはできません。