PhoneGap Ajax 上传文件
Posted
技术标签:
【中文标题】PhoneGap Ajax 上传文件【英文标题】:PhoneGap Ajax Upload File 【发布时间】:2013-07-30 14:48:09 【问题描述】:我正在尝试运行 thisPhoneGap 示例以将图像从设备上传到服务器。
// Wait for PhoneGap to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap is ready
//
function onDeviceReady()
// Retrieve image file location from specified source
navigator.camera.getPicture(uploadPhoto,
function(message) alert('get picture failed'); ,
quality: 50,
destinationType: navigator.camera.DestinationType.FILE_URI,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
);
function uploadPhoto(imageURI)
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
var params = new Object();
params.value1 = "test";
params.value2 = "param";
options.params = params;
var ft = new FileTransfer();
ft.upload(imageURI, "http://some.server.com/upload.php", win, fail, options);
function win(r)
alert("Code = " + r.responseCode);
alert("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
function fail(error)
alert("An error has occurred: Code = " + error.code);
alert("upload error source " + error.source);
alert("upload error target " + error.target);
就我而言,与上面提到的示例不同,我没有使用将数据发布到数据库中的 php 文件,而是使用安全 url 直接通过 html 发布数据。 在桌面版本上看起来像这样的东西:
<form action="https://mySecureUrl.com/?filename=myImage" method="post" enctype="multipart/form-data">
<input type="file" name="myfile"><br>
<input type="submit" value="Upload File to Server">
</form>
现在我尝试使用 PhoneGap FileTransfer() 应用相同的方法,我得到错误代码 3。
var ft = new FileTransfer();
ft.upload(imageURI, encodeURI("https://mySecureUrl.com/?filename=myImage.jpg"), win, fail, options);
是否可以在 PhoneGap 上以这种方法发布文件?怎么样?
如果没有,php 解决方案是什么?
【问题讨论】:
您使用的是哪个版本的 Phonegap?您正在链接到 1.5 中的示例,但此后该方法已更改为 docs.phonegap.com/en/3.0.0/… 嘿,谢谢。我更改了函数名称,但仍然没有运气。当我设置chunkedMode = false
时,我可以得到文件未找到错误和 http 状态 = 500。我真的迷路了。服务器日志说由于 \r\n 字符导致上传失败......有什么想法吗?
非法字符在哪里?还要检查您的文件密钥。表单上的名称和代码中的键不同。
HTML 表单上的名称? HTML 表单没有出现在我的代码中,这是我如何在桌面版本上发布 imgaes 的一个示例。我在 filekey 中还有哪些其他选项?
【参考方案1】:
options 下的 fileKey 是服务器要查找的名称。在 HTML 中,您将名称设置为“myfile”,而在 javascript 中,您将名称设置为“file”。
<input type="file" name="myfile">
options.fileKey="file";
options.fileKey 和属性名是一回事,所以请确保您的 PHP 在 $_FILES 数组中查找“文件”
【讨论】:
正如我所说,不是这样。 服务器日志说有非法包机。以上是关于PhoneGap Ajax 上传文件的主要内容,如果未能解决你的问题,请参考以下文章
为啥我将 zip 文件上传到 phonegap 服务时出现错误?
使用 Phonegap 以编程方式将文件从 SD 卡上传到远程服务器
phonegap 上传应用程序时出错:您的二进制文件未针对 iPhone 5 进行优化