用于图像上传的 Cordova FileTransfer 插件错误代码 1

Posted

技术标签:

【中文标题】用于图像上传的 Cordova FileTransfer 插件错误代码 1【英文标题】:Cordova FileTransfer Plugin error code 1 for image upload 【发布时间】:2016-10-27 23:15:43 【问题描述】:

我正在尝试在我的 phonegap 应用上拍照,然后使用 FileTransfer 插件将其上传到我的服务器。我收到错误代码 1,但没有其他解释 - 这非常令人沮丧。我搜索了所有已知的文档和博客,但都没有运气。

我正在使用基本的 LAMP 服务器,它继续给我一个 http 500 代码。我 99.9% 确信这个错误是特定于我的服务器的,因为我已经用我的不同 Web 服务器对此进行了测试,并且代码工作正常。回复如下:

"code":1,"source":"file:///storage/emulated/0/android/data/io.cordova.xxappxx/cache/1477607161788.jpg","target":"https://server.com/php/uploadPhoto.php","http_status":500,"body":"\t","exception":"https://server.com/php/uploadPhoto.php"

下面是我的前端js代码:

function uploadPhoto(imageURI) 
    var options = new FileUploadOptions();
    options.fileKey="file";
    options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
    alert(options.fileName);
    options.mimeType="image/jpeg";

    var params = ;
    params.value1 = sessionStorage.getItem("token");
    options.params = params;
    options.chunkedMode = false;
    options.headers = Connection: "close";

    var ft = new FileTransfer();
    ft.upload(imageURI, "https://servername.com/php/uploadPhoto.php", function(result)
    console.log(JSON.stringify(result));
    , function(error)
    console.log(JSON.stringify(error));
    , options, true);

这是我正在调用的后端 PHP 代码 (uploadPhoto.php):

<?php
session_start();
header('Access-Control-Allow-Origin : *');
$new_image_name = "$userId.jpg";
move_uploaded_file($_FILES["file"]["tmp_name"], "/var/img/".$new_image_name);
?>

【问题讨论】:

你检查你的服务器配置了吗?如果您使用 PHP 中的 move_uploaded_file() 函数上传大文件,请做一个简单的技巧。 1) 在 Web 服务器的根文件夹中创建一个 .htaccess 文件。 2) 将以下代码放在 .htaccess 文件中并保存。 php_value upload_max_filesize 8M php_value post_max_size 8M php_value max_execution_time 200 php_value max_input_time 200 或者在你的 php.ini 文件中更改这个并设置配置 我认为这可能与大小有关......但我刚刚实现了这个并且仍然得到相同的结果。我不确定还有什么可以尝试的?我正在尝试对图像进行 base64 编码并使用 ajax 上传它......我希望它有效 我认为这是因为最大上传大小造成的。请尝试以较小的大小上传。或重新检查您的上传目录路径和文件夹权限 我将这些行添加到 .htaccess 文件中,但没有任何变化...它不能是大小,我的 php.ini 的限制设置为 2M,但这些文件平均为 100 KB .也许它是文件路径?但我已将权限设置为 777 只是为了检查,我仍然收到 HTTP 500 代码 尝试将其添加到您的 php 代码 error_reporting(E_ALL); ini_set('display_errors', 'on'); 中,然后再创建一个简单的 html 表单用于文件上传。查看错误报告 【参考方案1】:

这最终成为图像大小的问题。我正在为一所大学做这个项目,他们的服务器安装了很多安全性 - 其中一个安全配置的文件上传大小限制非常小,这会阻止上传。我通过扫描/var/log/ 目录中的一些日志文件发现了这一点。

【讨论】:

以上是关于用于图像上传的 Cordova FileTransfer 插件错误代码 1的主要内容,如果未能解决你的问题,请参考以下文章

Cordova/Ionic 应用程序通过服务器签名的 url 将 base64 图像上传到 S3

拍摄照片后,Ionic cordova 相机插件间歇性崩溃(使用 Firebase 图像上传)

将 .ipa 上传到 iTunes Visual Studio Cordova 时出错

无法使用 Cordova 文件传输插件上传到 SAP Content Server

Cordova 功能不适用于服务器

(IOS) Cordova Camera Plugin 引用已删除的图像