当用户购买可下载产品并且页面重定向到下载页面时,当用户点击产品链接进行保存时,chrome会开始下载链接,但文件大小未知,因此进度条不起作用。
让我的客户感到沮丧。
我在function download_headers()
中找到class-wc-download-handler.php
并将其编辑为以下代码。
因为php函数filesize()
不适用于非绝对路径(不是网址,应该是public_html/wordpress/....
.ex)
还添加了Content-Range
,但它仍然无效。
function download_headers( $file_path, $filename ) {
self::check_server_config();
self::clean_buffers();
nocache_headers();
header( "X-Robots-Tag: noindex, nofollow", true );
header( "Content-Type: " . self::get_download_content_type( $file_path ) );
header( "Content-Description: File Transfer" );
header( "Content-Disposition: attachment; filename=\"" . $filename . "\";" );
header( "Content-Transfer-Encoding: binary" );
$url = $file_path;
static $regex = '/^Content-Length: *+\K\d++$/im';
if ( ! $fp = @fopen( $url, 'rb' ) ) {
return false;
}
if ( isset( $http_response_header )
&& preg_match( $regex, implode( "\n", $http_response_header ), $matches ) ) {
return (int)$matches[0];
}
$size = strlen( stream_get_contents( $fp ) );
header( "Content-Range: 0-" . ($size-1) . "/" . $size );
header( "Content-Length: " . $size );
}