2013-04-02 62 views
7

有沒有從客戶端上傳文件使用PHP使用REST服務器,上傳文件在PHP中使用REST

我嘗試使用下面的代碼的方式,它不是從我的工作。

<?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; 

?> 

和我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

我想你應該在尋找'$ _FILES ['file_contents']'而不是'$ _POST ['file']''。 – user1190992

+0

啊,我現在看,謝謝 –

回答

4

我想你應該尋找$_FILES['file_contents'],而不是 $_POST['file']。 - user1190992

7

試試這個。

的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> 

和upload.php的在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"]); 
?>