使用 Phonegap 以编程方式将文件从 SD 卡上传到远程服务器
Posted
技术标签:
【中文标题】使用 Phonegap 以编程方式将文件从 SD 卡上传到远程服务器【英文标题】:Programmatically upload a file from SD Card to a remote server using Phonegap 【发布时间】:2012-05-29 13:03:55 【问题描述】:我一直在尝试使用 Android 移动设备中的 Phonegap 以编程方式将 (zip) 文件上传到远程服务器。我已经尝试了FileAPI 文档并找到了here 的解决方案。但这似乎不起作用。但是,我可以按照示例中的说明成功上传图像(使用相机和导航器)。
我在 SD 卡 的文件夹 test
中有一个文件 test.zip
。我需要将此文件上传到远程服务器。
任何有关这方面的帮助都会很棒。
【问题讨论】:
是不是 URI 错误?有没有办法为 SD 卡获取正确的 URI?尝试使用 'file:///test/test.zip' 和 'content://media/external/test/test.zip' 您指出的 FileAPI 表示如果出现错误。错误将在带有 FileTransferError 对象的错误回调中报告。那个物体在说什么? 收到错误“错误回调中的错误:FileTransfer3 = ReferenceError:分配中的左侧无效”。但如果 FILEURI 给出为“content://media/external/images/media/963”,我可以成功上传图像。我认为我的 zip fileURI 有问题? 我自己没用过Phonegap,但是对我来说好像是错误回调函数本身有错误。由于图像上传成功,因此永远不会调用错误回调。如果zip文件上传有错误但当前隐藏在错误回调中的错误后面! 【参考方案1】:我搞定了,这是我使用的代码
uploadFile('test.zip', 'Test', 'multipart/x-zip');
function uploadFile(fileName, dirName, fileMime)
var win = function(r)
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
alert(r.response);
;
var fail = function(error)
alert("An error has occurred: Code = " = error.code);
;
var fileURI;
var gotFileSystem = function(fileSystem)
fileSystem.root.getDirectory(dirName,
create : false
, function(dataDir)
fileURI = dataDir.fullPath;
fileURI = fileURI + '/' + fileName;
alert(fileURI);
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileURI.substr(fileURI.lastIndexOf('/') + 1);
options.mimeType = fileMime;
var params = new Object();
params.value1 = "test";
params.value2 = "param";
options.params = params;
var ft = new FileTransfer();
ft.upload(fileURI,
// Enter the server url
"http://example.com/upload.php", win,
fail, options);
, dirFail);
;
// file system fail
var fsFail = function(error)
alert("failed with error code: " + error.code);
;
// get file system to copy or move image file to
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFileSystem,
fsFail);
var dirFail = function(error)
alert("Directory error code: " + error.code);
;
【讨论】:
以上是关于使用 Phonegap 以编程方式将文件从 SD 卡上传到远程服务器的主要内容,如果未能解决你的问题,请参考以下文章
使用 PhoneGap/jQuery Mobile 以编程方式在 iPhone/Android 日历中添加事件?
通过 Phonegap 在 Android 中以编程方式设置静音模式