我正在尝试为某个站点开发移动应用程序,该应用程序使用 HTML 表单进行数据传输。 目前我正在为 Android 开发,但这个应用程序应该也适用于 iOS 和 WP7(这就是我选择 PhoneGap 的原因)。
我使用的表单有 <input type="file">
标签,我应该通过它传递图像本身,因为我无法访问服务器部分。
我尝试过的:
- 使用
<input type="file">
标记在表单上,但它不会打开文件选择器对话框。 使用 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 仅传递图像,因为我无权访问表单并且所有数据都必须是完整的。
最佳答案
input[type=file] 不会在所有设备上一致地工作。版本 6 以下的 iOS 设备将完全不支持它。但是,PhoneGap 确实允许您访问文件系统。您可以提供另一种选择文件的方式。请参阅文件系统文档:http://docs.phonegap.com/en/2.1.0/cordova_file_file.md.html#File
这些也讨论了 FileTransfer 对象。这会让您上传文件。
关于android - 在 Android 上通过 HTML FIleUpload 将图片上传到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12771272/