2017-03-25 110 views
0

PhoneGap的文件传输上传图片到服务器

<!DOCTYPE HTML> 
 
<html> 
 
<head> 
 
<title> HellowWorld PhoneGap App </title> 
 
<script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
 
<script type="text/javascript"> 
 
document.addEventListener("deviceready", onDeviceReady, false); 
 
function onDeviceReady() { 
 
alert("Ready "); 
 
} 
 

 
function capture(){ 
 
    navigator.camera.getPicture(onSuccess, onFail, { quality: 50, 
 
     destinationType: Camera.DestinationType.FILE_URI, 
 
     sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY 
 
    }); 
 
} 
 

 
var image = document.getElementById('myImage'); 
 
\t \t image.src = imageData; 
 
\t \t var blob = image[0].getAsFile(); 
 
\t \t window.URL = window.URL || window.webkitURL; 
 
\t \t var blobUrl = window.URL.createObjectURL(blob); 
 

 
\t \t var file = blob; 
 
\t \t upload(file); 
 

 

 
function uploadImage(file){ 
 

 
\t \t 
 

 
     var fd = new FormData(); 
 
     fd.append("file", file); 
 
     var xhr = new XMLHttpRequest(); 
 

 
     xhr.open('POST', 'uploads/upload.php', true); 
 
     xhr.send(fd); 
 

 
    } 
 

 
function onUploadSuccess(){ 
 
    alert('Photo Uploaded Successfully'); 
 
} 
 

 
function onUploadError(){ 
 
    alert('Error uploading photo'); 
 
} 
 

 
function onSuccess(imageData) { 
 
    var image = document.getElementById('myImage'); 
 
    image.src = imageData; 
 
    uploadImage(imageData); 
 
} 
 

 
function onFail(message) { 
 
    alert('Failed because: ' + message); 
 
} 
 
    
 

 
</script> 
 
</head> 
 
<body> 
 
<h1>Upload images to remote server</h1> 
 

 
<div class="app"> 
 
<h4><a href="#" onclick="capture();">Select an Image</a></h4> 
 
<img id="myImage" src="" width="50%"> 
 
</div> 
 
    
 

 
</body> 
 
</html>
<?php 
 

 
$destination = 'uploads/'; 
 

 
if (isset($_FILES["file"]["name"])) { 
 

 
    $name = $_FILES["file"]["name"]; 
 
    $tmp_name = $_FILES['file']['tmp_name']; 
 
    $error = $_FILES['file']['error']; 
 

 
    //echo $name; 
 
    //echo $tmp_name; 
 
    //echo $error; 
 

 
    move_uploaded_file($_FILES['file']['tmp_name'], $destination.$name); 
 

 
} 
 

 
?>

,所以我尝试创建一个PhoneGap的应用将图片上传到服务器。我首先创建了一个上传文件夹并粘贴了upload.php。 javascript和html是index.html。我试着跑步,它允许我拍照并查看照片,但上传照片时出现错误。怎么来的?我写错了什么?

<?php 
print_r($_FILES); 
move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/". $_FILES["file"]["name"]); 
?> 

document.addEventListener("deviceready", onDeviceReady, false); 
 

 
function onDeviceReady() { 
 
    alert("Ready "); 
 
} 
 

 
function capture() { 
 
    navigator.camera.getPicture(onSuccess, onFail, { 
 
    quality: 50, 
 
    destinationType: Camera.DestinationType.FILE_URI, 
 
    sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY 
 
    }); 
 
} 
 

 

 
function uploadImage(imageData) { 
 
    var serverURL = "localhost:3000/uploads/upload.php"; 
 
    var options = new FileUploadOptions(); 
 
    options.fileKey = 'file'; 
 
    options.fileName = imageData.substr(imageData.lastIndexOf('/') + 1); 
 
    options.mimeType = "image/jpeg"; 
 

 
    var ft = new FileTransfer(); 
 
    ft.upload(imageData, serverURL, onUploadSuccess, onUploadError, options); 
 
} 
 

 
function onUploadSuccess() { 
 
    alert('Photo Uploaded Successfully'); 
 
} 
 

 
function onUploadError() { 
 
    alert('Error uploading photo'); 
 
} 
 

 
function onSuccess(imageData) { 
 
    var image = document.getElementById('myImage'); 
 
    image.src = imageData; 
 
    uploadImage(imageData); 
 
} 
 

 
function onFail(message) { 
 
    alert('Failed because: ' + message); 
 
}
<!DOCTYPE HTML> 
 
<html> 
 

 
<head> 
 
    <title> HellowWorld PhoneGap App </title> 
 
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
 
</head> 
 

 
<body> 
 
    <h1>Upload images to remote server</h1> 
 

 
    <div class="app"> 
 
    <h4><a href="#" onclick="capture();">Select an Image</a></h4> 
 
    <img id="myImage" src="" width="50%"> 
 

 
    </div> 
 

 

 
</body> 
 

 
</html>

+0

什么错误,请具体说明 – RiggsFolly

+0

@RiggsFolly 功能onUploadError(){ 警报(“上传照片时出错”); } 这个错误 – user7569149

+0

你在为android建设吗? – Harish

回答

0

在首先你需要使用isset像以下,避免某些错误:

<?php 

$destination = './data/test/'; 

if (isset($_FILES["file"]["name"])) { 

    $name = $_FILES["file"]["name"]; 
    $tmp_name = $_FILES['file']['tmp_name']; 
    $error = $_FILES['file']['error']; 

    //echo $name; 
    //echo $tmp_name; 
    //echo $error; 

    move_uploaded_file($_FILES['file']['tmp_name'], $destination.$name); 

} 

?> 

,并使用此上传功能:

function upload(file){ 

     var fd = new FormData(); 
     fd.append("file", file); 
     var xhr = new XMLHttpRequest(); 

     xhr.open('POST', 'upload.php', true); 
     xhr.send(fd); 

    } 

,让您的图像和上传功能的调用之前,你可以使用这个:

var image = document.getElementById('myImage'); 
    image.src = imageData; 
    var blob = image[0].getAsFile(); 
    window.URL = window.URL || window.webkitURL; 
    var blobUrl = window.URL.createObjectURL(blob); 

    var file = blob; 
    upload(file); 
+0

nope,我只是试过这个它仍然不工作.. – user7569149

+0

我试过了上传功能,现在我不能点击选择图像以及 – user7569149

+0

你需要转换imageData之前调用上传功能 – Aotoki