C'è un file "/home/test.mp4"
nella mia macchina locale,Come caricare il file nella directory di destinazione con curl?
voglio caricarlo nella /var/www/ok.mp4
(il nome è cambiato quando ha caricato). Tutti i file di origine e di destinazione si trovano nel computer locale.
Come risolvere il mio codice parziale, aggiungere qualcosa o modificare qualcosa?
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_exec($ch);
?>
Pensate a Ram Sharma, il codice è stato cambiato come il seguente:
<?php
$request = curl_init('http://127.0.0.1/');
curl_setopt($request, CURLOPT_POST, true);
curl_setopt(
$request,
CURLOPT_POSTFIELDS,
array(
'file' => '@' . realpath('/home/test.mp4')
));
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($request);
// close the session
curl_close($request);
?>
Un messaggio di errore si verifica:
funziona!
Questa è la pagina Web predefinita per questo server.
Il software del server Web è in esecuzione ma non è stato ancora aggiunto alcun contenuto.
Ho un test con ftp_put, codice1 funziona correttamente.
code1:
<?php
set_time_limit(0);
$host = 'xxxx';
$usr = 'yyyy';
$pwd = 'zzzz';
$src = 'd:/upload.sql';
$ftp_path = '/public_html/';
$des = 'upload_ftp_put.sql';
$conn_id = ftp_connect($host, 21) or die ("Cannot connect to host");
ftp_login($conn_id, $usr, $pwd) or die("Cannot login");
$upload = ftp_put($conn_id, $ftp_path.$des, $src, FTP_ASCII);
print($upload);
?>
Il file di d:/upload.sql
nel mio pc locale possono essere caricati in my_ftp_ip/public_html/upload_ftp_put.sql
con code1.
Ora lo rewite con curl in code2.
Codice2:?
<?php
set_time_limit(0);
$ch = curl_init();
$host = 'xxxx';
$usr = 'yyyy';
$pwd = 'zzzz';
$src = 'd:/upload.sql';
$ftp_path = '/public_html';
$dest = 'upload_curl.sql';
$fp = fopen($src, 'r');
curl_setopt($ch, CURLOPT_URL, 'ftp://user:[email protected]/'.$ftp_path .'/'. $dest);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($src));
curl_exec ($ch);
$error_no = curl_errno($ch);
print($error_no);
curl_close ($ch);
?>
Le informazioni errore di uscita è 6 .Perché non può caricare il mio file locale nella ftp con l'arricciatura Come risolvere il problema?
Se si trova già nel filesystem locale, perché non solo ['copy ($ src, $ dest)'] (http://php.net/copy)? – mario
Perché '/ home /' essere accessibile per HTTP comunque? E cosa dovevano fare i '_POSTFIELDS'? – mario
Ora non ho vps per testare il codice, l'ipotesi che tutto il file sorgente e di destinazione nel computer locale possa essere cambiato quando mi dai il codice giusto. –