我正在构建一个基于 Cordova/PhoneGap 的 Web 应用程序,它使用 multipart/form-data POST 请求将文件上传到服务器。
以下代码适用于 BlackBerry 10:
var postRequest = new XMLHttpRequest();
if (postRequest.overrideMimeType) {
postRequest.overrideMimeType('text/xml');
}
var fd = new FormData();
fd.append('param1', 'value1');
[...]
fd.append('file', file, fileName);
postRequest.open('POST', url, true);
postRequest.send(fd);
然而,在运行 iOS6 的 iPhone 上,该File
对象在发送到服务器时被 [Object object] 替换String
,类似于Safari 在将 File 插入 FormData 时将文件转换为 [object Object] 中描述的问题。怎么修?.
与该问题相反,我没有克隆 File 对象。我的应用程序通过“打开方式...”菜单使用来自其他应用程序的文档进行调用。我传递了一个本地文件系统 URI,我使用window.resolveLocalFileSystemURI()
. 这完美地工作,我首先收到一个 FileEntry 和一个 File 对象。但是,似乎无法正确识别此对象,toString()
而是在将请求传输到服务器时调用其方法。
这是iOS上的错误吗?或者在创建 File 对象时可能是 PhoneGap 中的错误?最好的解决方法是什么?
更新:我刚刚在 Android 上遇到了同样的问题,所以这个问题似乎并不特定于 iOS。