我正在使用Phone Gaps(Cordova 2.1)文件传输API将用户照片库中的图像发布到我的服务器上。文件传输API似乎运行良好。我只是对在服务器上检索此信息感到困惑。
理想情况下,我需要做的是检索图像,然后将其上传到我的服务器。但是,我似乎无法从文件传输中检索任何信息?
我的JavaScript代码(发布图像数据)为:
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 = {};
params.value1 = "test";
params.value2 = "param";
options.params = params;
var ft = new FileTransfer();
ft.upload(imageURI, encodeURI("http://some.server.com/upload.php"), win, fail, options);
}
function win(r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
}
function fail(error) {
alert("An error has occurred: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
我的服务器端代码是:
$paramValue = $_POST['fileKey']; //Undefined variable
$paramValue2 = $_POST['options']; //Undefined variable
$paramValue3 = $paramValue2['fileKey'] //Undefined variable
我也尝试过:
//POST variable
$paramValue = $_POST['params'];
echo "Param Value1: " . $paramValue['value1']; //Should return "test"
我也尝试过:
//POST variable
$paramValue = $_POST['options'];
echo "Param Value1: " . $paramValue['options']['params']['value1']; //Should return "test"
我得到的只是未定义的变量错误?
任何帮助将不胜感激,谢谢!
参考方案
在http://some.server.com上,您可以具有/var/www/
目录,在此目录中,需要upload.php,并且此目录中的代码应将图像移动到该文件夹中
/var/www/TEST/
<?php
print_r($_FILES);
$new_image_name = "YEAH.jpg";
move_uploaded_file($_FILES["file"]["tmp_name"], "/var/www/TEST/".$new_image_name);
?>
那是您唯一需要的额外东西。
先决条件:
http://some.server.com上的XAMPP LAMP WAMP或MAMP
为了清楚起见,这是JavaScript和HTML,只是向您展示我的upload.php文件如何适合:
在你的头上
<script type="text/javascript" charset="utf-8">
// Wait for PhoneGap to load
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap is ready
function onDeviceReady() {
console.log("device ready");
// Do cool things here...
}
function getImage() {
// 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;
options.chunkedMode = false;
var ft = new FileTransfer();
ft.upload(imageURI, "http://some.server.com/TEST/upload.php", win, fail, options);
}
function win(r) {
console.log("Code = " + r.responseCode.toString()+"\n");
console.log("Response = " + r.response.toString()+"\n");
console.log("Sent = " + r.bytesSent.toString()+"\n");
alert("Code Slayer!!!");
}
function fail(error) {
alert("An error has occurred: Code = " + error.code);
}
</script>
</head>
这就是我的身体
<button onclick="getImage();">Upload a Photo</button>
获取PHP中函数调用者的__FILE__常量 - php我知道PHP中的__FILE__魔术常数将变成当前执行文件的完整路径和文件名。但是,有什么方法可以使函数的调用文件获得相同的信息吗?例如://foo.php: include "bar.php"; call_it(); //bar.php function call_it() { echo "Calling file: …
检查文件是否存在且大于 - php我需要检查与脚本位于同一文件夹中的文件是否存在并且大于100字节,如果是,则回显“是否存在”。 参考方案 我相信您正在尝试执行以下操作:$filename = 'test.txt'; if (file_exists($filename) && filesize($filename) > 100) { echo …
PHP:从函数返回值并直接回显它? - php这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…
PHP:如何知道链接是否是有效的YouTube链接? - php这是例子。www.youtube.com, http://www.youtube.com/, http://www.youtube.com/watch?v=YoB8t0B4jx4 我不在乎它是否具有视频或仅YouTube网址,而只有有效网址。我想做的是,当我知道它是有效的YouTube网址时,我将检查它是否具有视频ID。如果它具有ID,我将为视频添加ifra…
排序PHP迭代器 - php有没有一种简单的方法可以在PHP中对迭代器进行排序(而不仅仅是将其全部拉入数组并进行排序)。我有一个具体的例子是DirectoryIterator,但是对所有迭代器都有一个通用的解决方案会很好。$dir = new DirectoryIterator('.'); foreach ($dir as $file) echo $file->…