2017-08-24 24 views
0

我將從控制器接到一個文件,並將其進行如何發表cUrl作者方法的文件中yii2

$filePath = Yii::getAlias("@backend/web/uploads/".$filename); 

添加此文件張貼到操作URL後。我嘗試使用

$request = curl_init($url_path); 
    curl_setopt($request, CURLOPT_POST, true); 
    curl_setopt(
     $request, 
     CURLOPT_POSTFIELDS, 
     array(
      'filedata' => $file_path 
     )); 


    curl_setopt($request, CURLOPT_RETURNTRANSFER, true); 

但它不工作。我需要yii2

回答

0

解決方案,您應該使用'文件'=> '@'curl_setopt($ curl_handle,CURLOPT_SAFE_UPLOAD,FALSE);

工作和測試上PHP 5.6+示例

服務器端(index.html的):

<!DOCTYPE html> 
<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Select file to upload: 
     <input type="file" name="myf" id="myf"> 
     <input type="submit" value="Upload" name="submit"> 
</form> 

</body> 
</html> 

服務器端(upload.php的):

<?php 

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

echo $_FILES["myf"]["tmp_name"]; 
move_uploaded_file($_FILES["myf"]["tmp_name"], 'f.dat'); 

?> 

客戶端(curl-test.php),您需要:

<?php 

$args['myf'] = '@/Users/Oleg/Temp/curl-test-php/example.txt'; 

$request = curl_init('http://domain.ru/upload/upload.php'); 
curl_setopt($request, CURLOPT_SAFE_UPLOAD, false); 
curl_setopt($request, CURLOPT_POST, true); 
curl_setopt($request, CURLOPT_POSTFIELDS, $args); 
curl_setopt($request, CURLOPT_RETURNTRANSFER, true); 
echo curl_exec($request); 
curl_close($request); 

?> 

https://wiki.php.net/rfc/curl-file-upload 約CURLOPT_SAFE_UPLOAD和正確的方法,如果你需要安全的解決方案

+0

它不工作,如果我添加@最初的文件路徑 –

+0

的你用什麼「文件」或「FILEDATA」使用未過時方法在數組中作爲一個關鍵? – Oleg

+0

yes是一個關鍵字,並保存文件路徑 –

相關問題