Phonegap的FileTransfer.upload()在Android上抛出错误代码3

时间:2012-08-02 18:55:28

标签: android cordova upload

我正在努力将图片上传到服务器。我能够使用iOS成功上传图像,但是当我尝试使用android时,我得到错误代码3.目前正在使用phonegap cordova 1.8.1。

我已经尝试将true添加到参数

upload(filePath, server, successCallback, errorCallback, options, **true**);

并添加此

options.chunkedMode = false;

我的AndroidManifest文件包含:

<uses-permission android:name="android.permission.INTERNET" />

我的cordova.xml文件包含:

<access origin="*"/>

我错过了什么吗?

由于

7 个答案:

答案 0 :(得分:7)

问题可能不在Phonegap中。如果服务器是基于Windows的服务器,请尝试使用其他服务器。另外,不要忘记添加以下行:

var options = new FileUploadOptions();
options.chunkedMode = false;
options.headers = {
      Connection: "close"
   };

答案 1 :(得分:5)

添加代码:

var op;
op = new FileUploadOptions();

op.headers = {
    Connection: "close"
};

添加之后 - 代码开始运行良好,没有错误。 更详细的说明:http://grandiz.com/phonegap-development/phonegap-file-transfer-error-code-3-solved 希望有所帮助!

答案 2 :(得分:2)

这也发生在我身上。您应该指定chunkedMode=false(http://stackoverflow.com/questions/8522729/phonegap-filetransfer-upload-fails-on-android)

var options = FileUploadOptions();
options.chunkedMode = false;

答案 3 :(得分:2)

这些是我用来解决这个问题的步骤:

添加了以下选项:

options.chunkedMode = false;
options.headers = {
      Connection: "close"
   };

但更重要的是,我使用Genymotion作为测试模拟器。将映像上传到localhost不起作用,因为模拟器在VM中运行,localhost表示VM的localhost而不是Web服务器的localhost。

因此,您应该上传到:

,而不是上传到“localhost”
http://10.0.2.2 

并将以下行添加到config.xml中:

<access origin="10.0.2.2" subdomains="true"/>

我测试了它,它的工作就像一个魅力。我花了3天时间才开始工作。

答案 4 :(得分:0)

这是phonegap库中一个未修复的错误,因为没有错误修复,我不得不通过我的工作来解决它(基本上每次备用失败都会重新上载):

ft.upload(path,
          encodeURI("http://yourdomain.com/upload.php"),
            function(result) {
                alert("Uploaded");
            },
            function(error) {
                ft.upload(path,
                encodeURI("http://yourdomain.com/upload.php"),
                function(result) {
                    alert("Uploaded");                  
                },
                function(error) {
                    alert("Error uploading image");
                },
                { fileName: name, fileKey: "file", mimeType: "image/jpeg", chunkedMode: false }, true);     
            },
            { fileName: name, fileKey: "file", mimeType: "image/jpeg", chunkedMode: false }, true);

答案 5 :(得分:0)

我已经向Telerik询问了我在AppBuilder上遇到的这个问题。根据他们的回复it might be a bug in Cordova(我使用3.2)。

他们建议更新到l atest FileTransfer library(也更新所有依赖项),看看是否能解决您的问题。我实际上遇到了另一个编译新库的问题。

我建议您尝试一下,看看它是否适合您。

答案 6 :(得分:-1)

你可以尝试其中任何一种:

android:debuggable="true"文件的<application>标记中设置AndroidManifest.xml

设置<access origin=".*"/>而不仅仅是评论部分中推荐的*,如下所示:

<!-- <access origin="https://example.com" /> allow any secure requests to example.com -->
<!-- <access origin="https://example.com" subdomains="true" /> such as above, but including subdomains, such as www -->
<!-- <access origin=".*"/> Allow all domains, suggested development use only -->