Dieser PHP Code funktioniert also für mich:
$ch = curl_init( TCS_CPDF_REMOTE_Zip );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$data = curl_exec( $ch );
curl_close( $ch );
file_put_contents( TCS_CPDF_LOCAL_Zip, $data );
aber wenn Sie versuchen, die WordPress-HTTP-API zu verwenden:
$the_body = wp_remote_retrieve_body( wp_remote_get( TCS_CPDF_REMOTE_Zip ) );
file_put_contents( TCS_CPDF_LOCAL_Zip, $the_body );
Am Ende bekomme ich eine 0KB-Datei, daher funktioniert die obige WordPress-Version nicht.
Wie kann man eine Datei von einem entfernten Ort mit der WordPress-API herunterladen?
Check out download_url()
- es wird nur im Admin geladen, daher musst du es im Frontend einbinden (oder dein eigenes schreiben), wenn es benötigt wird.
Aus download_url()
können Sie verwenden:
$response = wp_remote_get(
TCS_CPDF_REMOTE_Zip,
array(
'timeout' => 300,
'stream' => true,
'filename' => TCS_CPDF_LOCAL_Zip
)
);
Wenn Sie sich in WordPress Admin befinden, steht Ihnen die Funktion download_url()
zur Verfügung ( siehe Codexbeschreibung ).
download_url()
lädt die Datei herunter, stellt sie in einer temporären Datei zur Verfügung und gibt den Namen einer Datei zurück, die Sie kopieren/umbenennen und dann die Verknüpfung aufheben. Siehe download_url()
source hier in wp-admin/includes/file.php für weitere Details .
Die obige Antwort, die download_url () erwähnt, scheint ein wp_remote_get () - Beispiel zu haben - ein Beispiel für download_url () ist:
$permfile = 'safefilename.jpg';
$tmpfile = download_url( $url, $timeout = 300 );
copy( $tmpfile, $permfile );
unlink( $tmpfile ); // must unlink afterwards
Offensichtlich ist das sehr schön. Natürlich möchten Sie sicherstellen, dass $ permfile ordnungsgemäß bereinigt wird, wenn es auf einem extern bereitgestellten Dateinamen basiert.
$your_pdf_path = 'https://example.com/Fortrydelsesformular.pdf';
if (!class_exists('WP_Http'))
include_once( ABSPATH . WPINC . '/class-http.php' );
$http = new WP_Http();
$response = $http->request($your_pdf_path);
if ($response['response']['code'] != 200) {
return false;
}
$upload = wp_upload_bits(basename($your_pdf_path), null, $response['body']);
if (!empty($upload['error'])) {
return false;
}
$file_path = $upload['file'];
Wenn Sie den $upload
ausdrucken, sehen Sie unten
Array
(
[file] => /var/www/aug15/wp-content/uploads/2019/02/Fortrydelsesformular.pdf
[url] => https://myadomain.com/Fortrydelsesformular.pdf
[type] => application/pdf
[error] =>
)