Api Phonegap:照片未上载

Api Phonegap:照片未上载,api,cordova,upload,camera,photo,Api,Cordova,Upload,Camera,Photo,我正在尝试创建一个非常基本的照片上传功能。我在网上学习了很多教程和示例,但在实际使用过程中遇到了一些问题 目前我收到以下错误: 2012-03-26 17:37:02.107 Upload[84710:13403] fileData length: 72154 2012-03-26 17:37:02.119 Upload[84710:13403] File Transfer Error: unsupported URL 2012-03-26 17:37:02.121 Upload[84710:1

我正在尝试创建一个非常基本的照片上传功能。我在网上学习了很多教程和示例,但在实际使用过程中遇到了一些问题

目前我收到以下错误:

2012-03-26 17:37:02.107 Upload[84710:13403] fileData length: 72154
2012-03-26 17:37:02.119 Upload[84710:13403] File Transfer Error: unsupported URL
2012-03-26 17:37:02.121 Upload[84710:13403] [INFO] Error in error callback: org.apache.cordova.filetransfer1 = ReferenceError: Left side of assignment is not a reference.
这是我的Phonegap HTML文件:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>File Transfer Example</title>
    <script type="text/javascript" charset="utf-8" src="cordova-1.5.0.js"></script>
    <script type="text/javascript" charset="utf-8">

        // Wait for PhoneGap to load
        document.addEventListener("deviceready", onDeviceReady, false);

        // PhoneGap is ready
        function onDeviceReady() {
  // Do cool things here...
        }

        function getImage() {
            // 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;
            options.chunkedMode = false;

            var ft = new FileTransfer();
            ft.upload(imageURI, "hosting.domain.co.uk/ios/upload.php", win, fail, options);
        }

        function win(r) {
            console.log("Code = " + r.responseCode);
            console.log("Response = " + r.response);
            console.log("Sent = " + r.bytesSent);
            alert(r.response);
        }

        function fail(error) {
            alert("An error has occurred: Code = " = error.code);
        }

        </script>
</head>
<body>
    <button onclick="getImage();">Upload a Photo</button>
</body>
</html>
这是我的upload.php文件:

<?php
print_r($_FILES);
$new_image_name = "namethisimage.jpg";
move_uploaded_file($_FILES["file"]["tmp_name"], "/var/www/vhosts/domain.co.uk/subdomains/hosting/httpdocs/ios/uploads".$new_image_name);
?>
有没有什么明显的迹象表明我做错了

非常感谢


Jon

您正在使用fileURI上载照片,这就是为什么出现不支持的文件格式错误的原因。这是因为fileURI的格式是file://localhost/xx1.jpg. 服务器端的uploader函数不支持此操作

Javascript无法访问本机文件系统

Javascript无法直接访问底层文件系统,因此在phonegap情况下无法通过文件传输上传

解决方案

最好的办法是上传图像的base64编码字符串。您可以使用DestinationType的navigator.camera.DestinationType.DATA\u URL选项获取base64编码图像。这将返回base64编码的字符串。这可以很容易地通过json发送到服务器,并带有相关的元数据,如jpg或png格式和文件名等

看看phonegap和imgur提供的在线图像托管设施的成功使用


祝您好运,干杯

您正在使用fileURI上载照片,这就是您遇到不支持的文件格式错误的原因。这是因为fileURI的格式是file://localhost/xx1.jpg. 服务器端的uploader函数不支持此操作

Javascript无法访问本机文件系统

Javascript无法直接访问底层文件系统,因此在phonegap情况下无法通过文件传输上传

解决方案

最好的办法是上传图像的base64编码字符串。您可以使用DestinationType的navigator.camera.DestinationType.DATA\u URL选项获取base64编码图像。这将返回base64编码的字符串。这可以很容易地通过json发送到服务器,并带有相关的元数据,如jpg或png格式和文件名等

看看phonegap和imgur提供的在线图像托管设施的成功使用


祝你好运,干杯

你的域名被列入白名单了吗?是的,我已经启用了*用于测试你的URL无效:hosting.domain.co.uk/ios/upload.php。尝试将http://添加到前面。此外,请检查您的错误回拨以进行上载,因为您的警报行中存在语法错误。第二个=应该是a+。你有没有将你的域列入白名单?是的,我已启用*用于白名单测试你的URL无效:hosting.domain.co.uk/ios/upload.php。尝试将http://添加到前面。此外,请检查您的错误回拨以进行上载,因为您的警报行中存在语法错误。第二个=应该是a+。phonegap不建议使用DestinationType.DATA\u URL。这里提到了内存问题:很好的解释!感谢使用DestinationType.DATA\u URL,phonegap不建议使用此URL。此处指出存在内存问题:非常好的解释!谢谢