2013-04-02 13 views
7

Gibt es eine Möglichkeit, eine Datei von einem Client-Seite auf dem Server unter Verwendung von REST mit PHP, hochladenHochladen von Dateien in mit PHP REST

ich den folgenden Code zu verwenden, ich versuche, und es funktioniert bei mir nicht.

<?php 

$file_to_upload = array('file_contents'=>'@c:\\test.txt'); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://localhost/api/upload.php'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSER, TRUE); 
curl_setopt($ch, CURLOPT_UPLOAD, TRUE); 
curl_setopt($ch, CURLOPT_POST,TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $file_to_upload); 
curl_exec($ch) or die(curl_error($ch)); 
$error = curl_error($ch); 
curl_close ($ch); 
echo " Server response: ".$result; 
echo " Curl Error: ".$error; 

?> 

und meine upload.php

$uploaddir = realpath('./') . '/'; 
$uploadfile = $uploaddir . basename($_POST['file']['name']); 

echo $uploadfile; 
echo "\n"; 
echo '<pre>'; 
echo $_POST['file']['tmp_name']; 
     if (move_uploaded_file($_POST['file']['tmp_name'], $uploadfile)) { 
      echo "File is valid, and was successfully uploaded.\n"; 
     } else { 
      echo "Possible file upload attack!\n"; 
     } 
     echo 'Here is some more debugging info:'; 

     print_r($_FILES); 
     echo "\n<hr />\n"; 
     print_r($_POST); 
print "</pr" . "e>\n"; 
?> 
+4

Ich denke, Sie sollten nach '$ _FILES ['file_contents']' und nicht '$ _POST ['file']' suchen. – user1190992

+0

ah, ich sehe jetzt, danke –

Antwort

4

ich glaube, Sie für $_FILES['file_contents'] und nicht $_POST['file'] suchen sollte. - user1190992

7

bereits.

index.php

<?php 
    echo "<pre>"; 
    print_r($_FILES); 
    error_reporting(9); 
    if($_REQUEST['action'] == 'submit') { 
     $ch = curl_init(); 
     $filePath = $_FILES['file_upl']['tmp_name']; 
     $fileName = $_FILES['file_upl']['name']; 
     $data = array('name' => 'Foo', 'file' => "@$filePath", 'fileName' =>$fileName);    
     curl_setopt($ch, CURLOPT_URL, 'http://www.restServiceHost.com/file3/upload.php'); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
     curl_exec($ch); 
     curl_close($ch); 
    } 
?> 

<form name="file_up" action="" method="POST" enctype="multipart/form-data"> 
Upload your file here 
<input type="file" name="file_upl" id="file_upl"/> 
<input type="submit" name="action" value="submit"/> 
</form> 

und upload.php in http://www.restServiceHost.com/file3

<?php 
    echo "<pre>"; 
    echo 'in upload.php<br/>'; 
    print_r($_FILES); 
    print_r($_REQUEST); 
    move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_REQUEST["fileName"]); 
?>