1

我正在尝试为某些站点开发一个移动应用程序,该应用程序使用 HTML 表单进行数据传输。目前我正在为 Android 开发,但这个应用程序也应该在 iOS 和 WP7 上(这就是我选择 PhoneGap 的原因)。

我使用的表单有<input type="file">标签,我应该通过它传递图像本身,因为我无法访问服务器部分。

我试过的:

  1. 使用<input type="file">表单上的标签,但不会打开文件选择器对话框。
  2. 使用 PhoneGap 方法获取 base64 格式的图像并将其附加到表单参数,但服务器无法将它们识别为有效文件。为了实现这一点,我正在使用下一个功能:

    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 确实允许您访问文件系统。您可以提供另一种选择文件的方式。请参阅文件系统文档:http ://docs.phonegap.com/en/2.1.0/cordova_file_file.md.html#File

这些也讨论了 FileTransfer 对象。这将允许您上传文件。

于 2012-10-07T19:07:26.453 回答