在这个例子中,我添加了一个进度条的HTML和CSS部分,以及一个JavaScript函数 updateProgressBar,该函数用于更新进度条的状态。progressCallback 函数在下载过程中通过调用该JavaScript函数来更新进度条的状态。这样,你就可以在页面上看到一个动态的进度条。但由于PHP是服务器端语言,而浏览器是在收到完整响应后才开始渲染页面的,因此在文件下载过程中动态显示进度条可能会有些困难。
[php]
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 获取用户输入的下载地址
$fileUrl = $_POST["fileUrl"];
// 检查下载地址是否为空
if (empty($fileUrl)) {
echo "请提供文件下载地址。";
} else {
// 获取文件名
$fileName = basename($fileUrl);
// 保存文件到当前目录
$savedFilePath = __DIR__ . ‘/’ . $fileName;
// 初始化cURL会话
$ch = curl_init($fileUrl);
// 打开文件句柄用于保存文件
$fileHandle = fopen($savedFilePath, ‘w’);
// 设置cURL参数
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, ‘progressCallback’);
curl_setopt($ch, CURLOPT_FILE, $fileHandle);
// 执行cURL会话
curl_exec($ch);
// 关闭文件句柄
fclose($fileHandle);
// 关闭cURL会话
curl_close($ch);
// 检查文件是否成功保存
if (file_exists($savedFilePath)) {
echo "文件下载成功。";
} else {
echo "文件下载失败。";
}
}
}
function progressCallback($resource, $download_size, $downloaded, $upload_size, $uploaded) {
if ($download_size > 0) {
$progress = round(($downloaded / $download_size) * 100, 2);
echo "<script>updateProgressBar({$progress})</script>";
ob_flush();
flush();
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>远程文件下载</title>
<style>
#progress-container {
width: 300px;
border: 1px solid #ccc;
margin-top: 10px;
display: none;
}
#progress-bar {
width: 0;
height: 20px;
background-color: #4CAF50;
text-align: center;
line-height: 20px;
color: white;
}
</style>
</head>
<body>
<h1>远程文件下载</h1>
<form method="post" action="<?php echo $_SERVER[‘PHP_SELF’]; ?>">
<label for="fileUrl">文件下载地址:</label>
<input type="text" name="fileUrl" id="fileUrl" required>
<button type="submit">下载文件</button>
</form>
<div id="progress-container">
<div id="progress-bar">0%</div>
</div>
<script>
function updateProgressBar(progress) {
var progressBar = document.getElementById("progress-bar");
progressBar.style.width = progress + "%";
progressBar.innerHTML = progress + "%";
if (progress === 100) {
document.getElementById("progress-container").style.display = "none";
} else {
document.getElementById("progress-container").style.display = "block";
}
}
</script>
</body>
</html>
[/php]
-
一般设置
-
产品管理-B2B展示站
-
主题设置
-
商店设置
- Abandoned cart弃购挽回/购物车跟踪设置
- B2C商店设置向导
- Paypal付款设置
- Size guide table尺码表设置-针对服装和鞋
- Stripe支付设置
- Tax 税率设置
- 产品详情页侧边栏设置
- 优惠券设置
- 促销倒计时设置
- 促销弹窗设置
- 商店基础设置
- 已售出数量/库存进度条设置
- 物流设置及订单发货流程
- 虚拟销售通知信息提示
- 虚拟销售量/虚拟当前访问量
- 设置-满XXX元包邮
- 设置PDF Invoice发票/装箱单
- 货币设置
- 运费设置
- 运费设置案例1
- 邮件模板设置
- 隐藏checkout结账页面的Ship to a different address
- 页眉横幅设置
- 显示所有 (13) 折叠
-
幻灯片教程
-
其它
- B2B添加自定义产品起批量
- CSS-自定义渐变背景
- Facebook Meta Pixel 像素代码安装
- Google Merchant Center
- Mailchimp邮件订阅功能
- Mailgun邮件订阅功能
- PDF账单的中文字符问题
- PHP远程下载文件
- Polylang 多语言
- VPS网络回程线路一键测试脚本
- VPS高负载排查流程
- woocommerce Checkout Field结账条件显示姓名及身份证号码字段
- woocommerce添加自定义字段
- Woodmart自定义功能代码
- Wordpress网站被黑修复
- 为背景图添加遮罩效果
- 产品导入CSV文件转码UTF-8
- 关于隐藏PayPal Standard 标准支付
- 删除外观->菜单->产品类别的分页
- 商店订单列表添加自定义列
- 如何使用 phpMyAdmin 创建新的 WordPress 管理员用户
- 如何使用Google网站管理员 (Google Search Console)提交网站
- 如何申请reCAPTCHA验证码
- 嵌入Youtube视频播放结束后不要显示其它推荐
- 常用插件
- 插入自定义Html block 简码
- 显示 WooCommerce 下载文件列表
- 添加Buy now 按钮-针对simple产品
- 添加自定义销售量
- 火车头采集产品导入woocommerce+SEO yoast
- 禁止Wordpress通知信息
- 移除Nitropack页脚标志
- 简单产品和可变产品添加buy now
- 给woocommerce Order by加on sale排序
- 给Wordpress后台页面添加自定义CSS
- 自定义Add To Cart按钮文字
- 自定义CSS代码
- 表格隔行显示背景
- 隐藏掉woocommerce Product data里面的选项卡
- 显示所有 (29) 折叠
-
站内优化
-
产品管理-B2C商城
-
SEO设置
-
B2B2C设置
-
页面设计
-
多语言
-
页头构建器
-
商店
-
操作指南
-
布局构建器
-
WoodMart 轮播
-
弹出层与浮动块
-
文章类型