用于图像上传的 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 时出错