所以这段PHP代码对我很有用:
$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 );
但在尝试使用WordPress HTTP API时:
$the_body = wp_remote_retrieve_body( wp_remote_get( TCS_CPDF_REMOTE_ZIP ) );
file_put_contents( TCS_CPDF_LOCAL_ZIP, $the_body );
我最终得到了一个0KB的文件,所以上面的WordPress版本不起作用。
那么,如何使用WordPress API从远程位置下载文件呢?
最合适的回答,由SO网友:TheDeadMedic 整理而成
退房download_url()
- 它只加载在admin中,因此如果需要,您必须在前端包含它(或编写自己的)。
从…起download_url()
您可以使用:
$response = wp_remote_get(
TCS_CPDF_REMOTE_ZIP,
array(
\'timeout\' => 300,
\'stream\' => true,
\'filename\' => TCS_CPDF_LOCAL_ZIP
)
);
SO网友:Brian C
如果您在WordPress Admin中,则具有以下功能download_url()
可用(see codex description).
download_url()
下载该文件,使其在临时文件中可用,并返回要复制/重命名然后取消链接的文件的名称。看见download_url()
来源于此处wp-admin/includes/file.php for more details.
上面提到download\\u url()的回答似乎有一个wp\\u remote\\u get()示例-download\\u url()的示例如下:
$permfile = \'safefilename.jpg\';
$tmpfile = download_url( $url, $timeout = 300 );
copy( $tmpfile, $permfile );
unlink( $tmpfile ); // must unlink afterwards
显然这很好。当然,如果$permfile是基于外部提供的文件名,那么您需要确保它被很好地清理干净。
SO网友:mujuonly
$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\'];
如果您打印出
$upload
, 你会在下面
Array
(
[file] => /var/www/aug15/wp-content/uploads/2019/02/Fortrydelsesformular.pdf
[url] => https://myadomain.com/Fortrydelsesformular.pdf
[type] => application/pdf
[error] =>
)