1

データ転送に HTML フォームを使用するサイト用のモバイル アプリケーションを開発しようとしています。現在、私は Android 向けに開発していますが、このアプリは iOS と WP7 にもあるはずです (そのため、PhoneGap を選択しました)。

私が使用しているフォームには<input type="file">タグがあり、サーバー部分にアクセスできないため、画像自体を渡す必要があります。

私が試したこと:

  1. タグをフォーム上でそのまま使用する<input type="file">には、ファイルピッカー ダイアログを開きません。
  2. 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 を使用することはできません。

4

1 に答える 1

1

input [type = file]は、すべてのデバイスで一貫して機能するわけではありません。バージョン6より前のiOSデバイスはそれをまったくサポートしません。ただし、PhoneGapを使用するとファイルシステムにアクセスできます。ファイルを選択する別の方法を提供できます。FileSystemのドキュメントを参照してください:http://docs.phonegap.com/en/2.1.0/cordova_file_file.md.html#File

これらは、FileTransferオブジェクトについても説明しています。これにより、ファイルをアップロードできます。

于 2012-10-07T19:07:26.453 に答える