php 如何下载远程文件到本地重命名

发布网友 发布时间:2022-04-06 04:19

我来回答

3个回答

懂视网 时间:2022-04-06 08:40

php实现下载并修改文件名称的方法:首先设置下载地址为“/download.php?controller=down_file&file=1.zip”;然后在Controller里控制输出名即可。

推荐:《PHP视频教程》

php下载文件时修改文件名

下载地址:

/download.php?controller=down_file&file=1.zip

然后在Controller里控制输出名就可以实现

$file = './路径/1.zip';
filename = '2.zip';
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-type:text/html;charset=utf-8");
header('Content-Disposition: attachment; filename='. $filename);
header('Content-Transfer-Encoding: binary');
header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
readfile($file);
exit;

==============

<?php
$file_name="aa.rar";//需要下载的文件
$file_name=iconv("utf-8","gb2312","$file_name");
$fp=fopen($file_name,"r+");//下载文件必须先要将文件打开,写入内存
if(!file_exists($file_name)){//判断文件是否存在
 echo "文件不存在";  //如果不存在
 exit();    //直接退出
}      //如果存在,继续执行下载
$file_size=filesize("aa.rar");//判断文件大小
//返回的文件
Header("Content-type: application/octet-stream");
//按照字节格式返回
Header("Accept-Ranges: bytes");
//返回文件大小
Header("Accept-Length: ".$file_size);
//弹出客户端对话框,对应的文件名
Header("Content-Disposition: attachment; filename=".$file_name);
//防止服务器瞬时压力增大,分段读取
$buffer=1024;
while(!feof($fp)){
 $file_data=fread($fp,$buffer);
 echo $file_data;
}
//关闭文件
fclose($fp);
?>

=========

我们一般实现下载都是调用url来下载,但是遇到ie能识别打开的文件就不能用这种方式了,比如下载一个图片、html网页等,这时就需要编程来实现,以下php代码可以解决:

<?
if( empty($_GET['FileName'])|| empty($_GET['FileDir'])|| empty($_GET['FileId'])){
 echo'<script> alert("非法连接 !"); location.replace ("index.php") </script>'; exit();
}
$file_name=$_GET['FileName'];
$file_dir=$_GET['FileDir'];
$FileId=$_GET['FileId'];
$file_dir = $file_dir."/";
if (!file_exists($file_dir.$file_name)) { //检查文件是否存在 
 echo "文件找不到"; 
 exit; 
 } else { 
$file = fopen($file_dir . $file_name,"r"); // 打开文件
// 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit();
}
?>

热心网友 时间:2022-04-06 05:48

给你一个思路:

1.使用文件读取函数 (注意问题:当文件很大时有可能会断掉。)
2.重新保存在你想要的位置就行了。追问我试过 不行 ,文件大一点就断掉了

热心网友 时间:2022-04-06 07:06

给你参考

参考资料:http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2009/0412/112.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com