无法通过 Phonegap 和 PHP 将图像上传到 Linux 服务器
Can't upload an image to a Linux server via Phonegap and PHP
我正在 PhoneGap 中制作一个应用程序,它需要将图像上传到 Linux 服务器。我设置了一个测试 CentOS 7 VM 并在其上安装并配置了 LEMP 堆栈,然后创建了一个 php 脚本调用 upload.php
(下)。这个脚本刚刚从互联网上的多个不同教程中取出,我只是编辑了将文件保存到我想要的位置的路径。
然后我创建了我的 javascript 代码来将它上传到服务器,但它没有工作,所以我只是从在线教程中获取代码只是为了测试目的,看看它是否工作正常(也以下)。我收到指示它正在工作但未上传图像的警报,因此我尝试禁用我的防火墙但仍然没有成功。
我不确定是服务器设置、javascript、php 还是我的 ISP 造成的。非常感谢任何帮助。
我正在使用 cordova 插件:
相机
文件
文件传输
PHP:
<?php
$new_image_name = urldecode($_FILES["file"]["name"]).".jpg";
move_uploaded_file($_FILES["file"]["tmp_name"], "/upload/".$new_image_name);
?>
Javascript:
navigator.camera.getPicture(uploadPhoto, function(message) {
alert('get picture failed');
}, {
quality: 100,
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";
console.log(options.fileName);
var params = new Object();
params.value1 = "test";
params.value2 = "param";
options.params = params;
options.chunkedMode = false;
var ft = new FileTransfer();
ft.upload(imageURI, "http://192.168.1.11/upload.php", function(result){
alert(JSON.stringify(result));
alert('works');
}, function(error){
console.log(JSON.stringify(error));
alert('doesnt');
}, options);
}
有一些问题需要克服。所有这些都相当简单。
我使用的是绝对路径,但 php 将其解释为相对路径,所以我只是更改了路径。
该目录也归 root 所有,所以我使用 chown nginx:nginx uploads
修复了这个问题
防火墙阻止了我的 phone 的访问,所以我禁用了防火墙,但仍然需要想出更好的解决方案。我敢肯定这很简单,但我还没有开始。
我正在 PhoneGap 中制作一个应用程序,它需要将图像上传到 Linux 服务器。我设置了一个测试 CentOS 7 VM 并在其上安装并配置了 LEMP 堆栈,然后创建了一个 php 脚本调用 upload.php
(下)。这个脚本刚刚从互联网上的多个不同教程中取出,我只是编辑了将文件保存到我想要的位置的路径。
然后我创建了我的 javascript 代码来将它上传到服务器,但它没有工作,所以我只是从在线教程中获取代码只是为了测试目的,看看它是否工作正常(也以下)。我收到指示它正在工作但未上传图像的警报,因此我尝试禁用我的防火墙但仍然没有成功。
我不确定是服务器设置、javascript、php 还是我的 ISP 造成的。非常感谢任何帮助。
我正在使用 cordova 插件: 相机
文件
文件传输
PHP:
<?php
$new_image_name = urldecode($_FILES["file"]["name"]).".jpg";
move_uploaded_file($_FILES["file"]["tmp_name"], "/upload/".$new_image_name);
?>
Javascript:
navigator.camera.getPicture(uploadPhoto, function(message) {
alert('get picture failed');
}, {
quality: 100,
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";
console.log(options.fileName);
var params = new Object();
params.value1 = "test";
params.value2 = "param";
options.params = params;
options.chunkedMode = false;
var ft = new FileTransfer();
ft.upload(imageURI, "http://192.168.1.11/upload.php", function(result){
alert(JSON.stringify(result));
alert('works');
}, function(error){
console.log(JSON.stringify(error));
alert('doesnt');
}, options);
}
有一些问题需要克服。所有这些都相当简单。
我使用的是绝对路径,但 php 将其解释为相对路径,所以我只是更改了路径。
该目录也归 root 所有,所以我使用 chown nginx:nginx uploads
防火墙阻止了我的 phone 的访问,所以我禁用了防火墙,但仍然需要想出更好的解决方案。我敢肯定这很简单,但我还没有开始。