2013-03-04 39 views
48

Tôi muốn biết cách tải lên tệp bằng cách sử dụng cURL hoặc bất kỳ thứ gì khác trong PHP. Tôi đã tìm kiếm trong google nhiều lần nhưng không có kết quả.cách tải lên tệp bằng curl với php

tôi có mã này để nhận các tập tin và tải nó lên

mã:

echo"".$_FILES['userfile'].""; 
$uploaddir = './'; 
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 
if (isset($_FILES["userfile"])) { 
    echo '<p><font color="#00FF00" size="7">Uploaded</font></p>'; 
    if (move_uploaded_file 
($_FILES["userfile"]["tmp_name"], $uploadfile)) 
echo $uploadfile; 
    else echo '<p><font color="#FF0000" size="7">Failed</font></p>'; 
} 

Tôi muốn đoạn code để gửi các tập tin đến người nhận tập tin.

+0

Tôi không biết bạn đã gõ gì vào Google, nhưng hãy thử với điều này: "php ftp upload" –

+4

không có "ftp", tôi muốn gửi tệp với curl trong $ _FILES ['userfile'] – Hadidi44

+0

Uhm .. Bây giờ thì sao? Bạn muốn gửi nó ở đâu? Hệ thống mục tiêu của bạn là gì? –

Trả lời

99

Sử dụng:

if (function_exists('curl_file_create')) { // php 5.5+ 
    $cFile = curl_file_create($file_name_with_full_path); 
} else { // 
    $cFile = '@' . realpath($file_name_with_full_path); 
} 
$post = array('extra_info' => '123456','file_contents'=> $cFile); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$target_url); 
curl_setopt($ch, CURLOPT_POST,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
$result=curl_exec ($ch); 
curl_close ($ch); 

Bạn cũng có thể tham khảo:

http://blog.derakkilgo.com/2009/06/07/send-a-file-via-post-with-curl-and-php/

gợi ý quan trọng dành cho PHP 5.5+:

Bây giờ chúng ta nên sử dụng https://wiki.php.net/rfc/curl-file-upload nhưng nếu bạn vẫn muốn để sử dụng cách tiếp cận không dùng nữa này, bạn cần phải đặt curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);

+0

cảm ơn nhưng cách tải nó lên tên khác như tên tệp là x.php và tôi muốn tải nó lên với tên z.php – Hadidi44

+0

Trong ví dụ về mẫu " "là tên. bạn có thể truy cập dữ liệu bằng cách sử dụng $ _FILES ['sample'] để bạn có thể chuyển x.php và truy xuất bằng $ _FILES ['x'] – karthik

+3

Có thể, là cách tốt hơn sử dụng tính năng tích hợp từ curl: http://www.php.net/manual/es/function.curl-file-create.php. Tất nhiên, bạn có thể sử dụng cách thức của POSTFIELDS và điền vào giá trị prepending với '@'. Dù sao, các asnwer được sao chép từ một cách sử dụng tùy chỉnh của curl từ một blog. Câu trả lời đúng là nói rằng '@' char định nghĩa nó như một tập tin, không phải là một var. $ post sẽ chứa '@ filename.jpg' bằng ví dụ. – erm3nda

Các vấn đề liên quan