首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下载时重命名文件

下载时重命名文件
EN

Stack Overflow用户
提问于 2009-11-26 01:25:53
回答 3查看 28.3K关注 0票数 8

当用户下载文件时,我想重命名它。

现在,我正在发送内容配置和内容长度标题,然后用fpassthru函数将文件发送给用户。

但是这种方法有三个问题:

  1. 如果我以这种方式发送大文件(超过3-4 4Gb),那么我的PHP脚本运行时间太长,可能会被超时所扼杀。
  2. 如果用户取消下载,PHP脚本将继续读取和发送文件
  3. 如果用户暂停下载,他不能在以后继续下载。

有没有更好的方法在下载时重命名文件?

EN

回答 3

Stack Overflow用户

发布于 2013-06-07 21:38:46

自从提出这个问题以来,一段时间过去了,html5给了我们一种不同的方法:

代码语言:javascript
复制
<a href="someWeiredFileName.rar" download="coolFilename.rar">Download</a>

attribute download (了解更多)定义了在客户端计算机上存储文件的默认filename (他仍然能够更改它!)。

注意:这不会影响服务器上的任何内容。

票数 15
EN

Stack Overflow用户

发布于 2009-11-26 01:31:52

代码语言:javascript
复制
<?php
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?> 
  1. 该文件将作为"downloaded.pdf“提供下载,而它的原始名称是"original.pdf”。

伪码

代码语言:javascript
复制
while(1) {
    Echo "..."; //<-- send this to the client
    if (connection_status()!=0){
    die;
    }
}
  1. 如果用户使用connection_status()取消浏览器,则可以停止PHP脚本
  2. HTTP无法重新连接已关闭的连接。FTP可以!
票数 14
EN

Stack Overflow用户

发布于 2009-11-26 01:50:34

对于第三点,您可以尝试使用HTTP范围头。

如果用户有一个具有简历功能的下载客户端,它应该将这些头发送到您的脚本中,您可以使用该脚本精确地确定要发送的文件的哪个部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1801076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档