【问题标题】:PhoneGap Ajax Upload FilePhoneGap Ajax 上传文件
【发布时间】: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 中还有哪些其他选项?

标签: php javascript android ajax cordova


【解决方案1】:

options 下的 fileKey 是服务器要查找的名称。在 HTML 中,您将名称设置为“myfile”,而在 javascript 中,您将名称设置为“file”。

<input type="file" name="myfile">

options.fileKey="file";

options.fileKey 和属性名是一回事,所以请确保您的 PHP 在 $_FILES 数组中查找“文件”

【讨论】:

  • 正如我所说,不是这样。
  • 服务器日志说有非法包机。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2011-03-03
  • 2011-09-26
  • 2010-12-26
  • 2014-11-16
相关资源
最近更新 更多