2016-04-18 5 views
0

Ich arbeite am Hochladen einer Datei auf einen Server mit dem Cordova-File-Transfer-Plugin. Ich weiß, dass meine Datei Hochladen funktioniert, wenn ich den Browser verwende, um eine Datei auszuwählen, aber ich bin mir nicht ganz sicher mit der App, da es für mich eine relativ neue Art ist, ohne Formulareinreichungen.Empfangende Cordova-Datei-Upload

EDIT: Der untenstehende Code ist modifiziert und ist, was für mich zu der Zeit nach der Befolgung @ Kay27 Tipps erfolgreich war. Die Lösung bestand darin, Parameter zu verwenden, um die Daten an den wartenden Upload-Handler zu senden.

function uploadFile() { 

function success(r) { 
    console.log("Code = " + r.responseCode); 
    console.log("Response = " + r.response); 
    console.log("Sent = " + r.bytesSent); 
} 

function fail(error) { 
    console.log("An error has occurred: Code = " + error.code); 
    console.log("upload error source " + error.source); 
    console.log("upload error target " + error.target); 
} 

/* Destination of file */ 
var url = encodeURI("http://someURL/yourPHPUploadFile.php"); 
var fileURI = "file:///storage/emulated/0/Android/data/com.yourPackageName/fileToUpload"; 

var options = new FileUploadOptions(); 
options.fileKey = "file"; 
options.fileName = fileURI.substr(fileURI.lastIndexOf('/') + 1); 
options.mimeType = "text/csv"; 

var params = new Object(); 
//allows you to POST the data to server side script 
params.fileName = options.fileName; 
options.params = params; 

var ft = new FileTransfer(); 
ft.upload(fileURI, url, success, fail, options); 
} 

Die bearbeitete PHP Form

<?php 
header('Access-Control-Allow-Origin: *'); 

$location  = "uploads/"; 
$uploadfile  = $_POST['fileName']; 
$uploadfilename = $_FILES['file']['tmp_name']; 

if (move_uploaded_file($uploadfilename, $location . '/' . $uploadfile)) { 
    echo 'File successfully uploaded!'; 
} else { 
    echo 'Upload error!'; 
} 
?> 
+0

Werfen Sie einen Blick auf diese Art der Definition von Params: http://StackOverflow.com/A/10851122/5920627 – kay27

+0

@ kay27 Dank einer Million, die neuere Methode zur Definition von Params hat den Trick. Getestet und die Datei wird hochgeladen! – morrisstu

Antwort

0

Für mein spezielles Thema arbeitete die neuere Art und Weise die params zu definieren. Die Lösung kann hier auf Simon MacDonald's answer gesehen werden. Ich habe den obigen Code mit der endgültigen Lösung bearbeitet, die mir das Hochladen ermöglichte.