PHP如何强制下载文件】的更多相关文章

整理个经常用的强制下载文件的函数,之前就说把一些常用的东西整理出来结果老是没时间,最近陆续把这些东西整理下. public function download() { $id = $this->_get('id'); $M = M("downloads"); $data=$M->where("id=$id and status=1")->find(); !$data && exit; $filename = iconv('UTF-8…
很多网站都需要做文件下载的功能.如果直接给连接的方式下载的话有很多的弊处...因为有时候需要对下载权限的检查,对下载次数的检查.所以一般采用php的方法进行安全下载.但是下载的时候如果是txt jpg或者pdf等一些浏览器可以直接识别的格式那么浏览器会默认选择直接在浏览器打开而不是保存在本机上. 但是有时我们不想让浏览器直接打开文件,如PDF文件,而是要直接下载文件,那么以下函数可以强制下载文件,函数中使用了application/octet-stream头类型. 代码如下: function…
原来一直没有接触过,这几天一直在玩儿文件上传下载的东西.今天又遇到一个坑. 描述:文件上传至服务器后,如果是rar或则其他的非浏览器直接识别的格式,用户点击链接了后是可以直接就被下载下来的.那么如果上传的是php的文件类型呢?这个就涉及到header了. 解决方案:利用header可以强制请求下载文件. header("Content-Type: application/force-download"); header("Content-Disposition: attach…
<?phpfunction download_remote_file_with_curl($file_url, $save_to) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch,CURLOPT_URL,$file_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $file_content = curl_exec($ch); curl_close(…
当前的浏览器能够识别文件格式,如果浏览器本身能够解析就会默认打开,如果不能解析就会下载该文件. 那么使用nginx做资源服务器的时候,如何强制下载文件呢? location /back/upload/file/ { if ($request_filename ~* ^.*?\.(txt|pdf|doc|xls)$){ add_header Content-Disposition "attachment;"; } } 如上,在location中添加头信息即可(测试成功,配置完毕./ngi…
FastDFS安装及其他问题参考:https://www.cnblogs.com/jxd283465/p/11556263.html直接调用FastDFS返回的url,浏览器访问后默认打开方式./usr/bin/fdfs_test /etc/fdfs/client.conf upload test.jpg 文件下载方案 1.调用download接口,定义下载的文件名 public void download(String fileUrl, HttpServletResponse response…
浏览器下载文件,例如在浏览器中可以直接打开的文件(.gif /.txt等).在进行文件下载操作时,默认是通过浏览器直接打开,而不是下载保存文件.并且通过这种方法下载文件可以不暴漏下载文件所在的路径,可以在下载之前进行一系列的权限控制.如果强制浏览器下载,有二种方案,一是:把所有文件全部做成压缩文件等浏览器无法识别的格式,操作比较繁琐.二是:通过php操作header,进行强制下载. 通过以下代码可以实现php强制文件下载,代码如下 <?php if(isset($_GET['key'])) {…
由于业务需要,在点击显示链接(如www.xxx.com/2015-01-15/xxx.png)显示媒体资源(如图片.视频.音频.文档),而在点击下载链接(如www.xxx.com/2015-01-15/xxx.png?download=true)请求静态资源时,强制下载而不是在浏览器中直接显示.经过多方查找各种方案,可以在nginx中设置强制下载,如下: location ~ .*\.(gif|jpg|jpeg|bmp|png|mp3|wma|mp4|swf|txt)$ { if ( $quer…
最近在做一个下载工具时,发现CSDN上的资源下载时竟然没有被拦截到,经过分析,终于有了一个发现,解决了我之前做文件下载时的乱码问题,所以转载这篇释疑文章,希望有人可以看到,可以从中得到帮助,也用来备忘. CSDN中的下载时Header里的内容是这样的: 键 值Content-Disposition attachment; filename*=UTF-8''Reflector.rar 针对上面这种写法的解释,主要是指filename后面的写法,于是转载以下内容,大家请看: ************…
首先弄清楚,什么是bom头?在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark).不仅限于 记事本保存的文件,只要在文件的开口包含了EF BB BF 几个不可见的字符(十六进制应该是是xEFxBBxBF,用二进制编辑文件可见).这像是一个约定俗成的东西,当系统看到这玩意的时候,就会觉得你这个文件是UTF-8编码的. 如果你的接口是UTF-8的,你需要强制下载一个文件,…
wget是一个从网络上自动下载文件的自由工具,支持通过HTTP.HTTPS.FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理.wget名称的由来是“World Wide Web”与“get”的结合. 要从一台主机上下载大量的文件到另一条主机上  ,登陆你的主机 执行 shell  脚本 wget -m -nd -np ftp://bjd:bjd@132.33.66.134/prodFile/data bjd 用户名密码 132.33.66.134 dcn  --当然要通 /prod…
在window下向linux传送文件的方法. 首先在window中安装SecureCRT,然后在快速连接中建立一个到linux的连接,当然,你要先知道你的系统的ip,在终端中键入ifconfig可以查看到. 然后连接即可登陆到linux的终端下 要从linux传文件到window的话,这需要cd到你要传的文件的目录,然后用命令:sz 文件名即可上传.文件放在securesrt/download下面 要从window传送文件到linux,则在终端中输入rz,然后会出来一个对话框让你选择文件传送的.…
jsp中实现文件下载,最简单的方式是在网页上做超级链接,如:<a href="music/abc.mp3">点击下载</a>. 但是,这样服务器上的目录资源会直接暴露给最终用户,会给网站带来一些不安全的因素. 因此,可以采用其它方式实现下载,常使用的有以下两种:       1.RequestDispatcher的方式进行:       2.采用文件流输出的方式下载(推荐). 1.采用RequestDispatcher的方式: 2.采用文件流输出的方式下载 对于…
为什么叫强制下载  因为你点击你的PDF文件路劲的话   浏览器是默认字网页上打开,而不是下载 我们需要做的就是 修改header头信息  使其变为下载状态 //下载PDF public function forceDownload() { $param = input('param.'); if(!empty($param['enclosure'])){ $filename = ROOT_PATH.'public'.DS.'uploads'.DS.$param['enclosure'].'.p…
引用自http://blog.csdn.net/wh211212/article/details/54285921 命令:curl 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具. 语法:# curl [option] [url] 常见参数: -A/--user-agent <string> 设置用户代理发送给服务器 -b/--cookie <name…
简单说就是,可以很方便地用这两个sz/rz工具,实现Linux下和Windows之间的文件传输(发送和接收),速度大概为10KB/s,适合中小文件.rz/sz 通过Zmodem协议传输数据   一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地: 与ssh有关的两个命令可以提供很方便的操作: sz:将选定的文件发送(send)到本地机器 rz:运行该命令会弹出一个…
Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理.所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行.这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦. wget 可 以跟踪HTML页面…
wget -r -N -l  -k http://192.168.99.81:8000/solrhome/ 命令格式: wget [参数列表] [目标软件.网页的网址] -V,–version 显示软件版本号然后退出: -h,–help显示软件帮助信息: -e,–execute=COMMAND 执行一个 “.wgetrc”命令 -o,–output-file=FILE 将软件输出信息保存到文件: -a,–append-output=FILE将软件输出信息追加到文件: -d,–debug显示输出信…
网站提供下载服务时经常需要实现一个强制下载功能(即强制弹出下载对话框),并且文件名保持和用户之前上传时相同. 效果如下图:  Content-Disposition 使用 HTTP Header 的 Content-Disposition: attachment 可以实现下载时强制弹出下载对话框. 由于HTTP协议规定,通信内容使用US ASCII编码,就是只能使用英文字符集.若要使用其他字符集,必须根据RFC3986使用百分号将字符串编码.   Content-Disposition: att…
来自:http://www.jb51.net/LINUXjishu/163820.html 其中,对于sz和rz的理解与记忆我用了如下的方法(因为很多时候容易搞混):sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to cilent,就等同于客户端在下载.rz中的r意为received(接收),告诉客户端,我(服务器)要接收文件 received by cilent,就等同于客户端在上传. 注意:sz和rz命令需要服务器支持,如果提示没有个命令: 复制代码 代码如下…
一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地?与ssh有关的两个命令可以提供很方便的操作:    sz:将选定的文件发送(send)到本地机器    rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive) rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具 windows端需要支持ZMode…
putty是一个开源软件,目前为止最新版本为0.70.对于文件或文件夹的上传下载,在Windows下它提供了pscp和psftp两个命令. (1).pscp pscp在命令提示符中使用,只要putty(ssh)能够远程,就能使用该命令. pscp [Windows上的路径,可绝对可相对] [Linux用户]@[Linux的IP地址或网络内唯一主机名]:[Linux上存放地址,绝对路径] pscp [Linux用户]@[Linux的IP地址或网络内唯一主机名]:[Linux上存放地址,绝对路径]…
linux 从百度网盘下载文件的方法 发表于2015 年 月 日由shenwang 方法1.wget wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能和特点: ()支持断点下传功能:这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了: ()同时支持FTP和HTTP下载方式:尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候,仍然…
java  的在线下载文件  .pdf 1.下载资源的本地位置 2.设置响应头 3.下载代码 1 PeriodicalResource periodicalResource = periodicalResourceService.get(id); String filePath = periodicalResource.getAttachment();//获取资源位置 File file = new File(periodicalBaseDir + filePath);//本地资源位置 if (…
import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class TestUtil { /* 根据文件所在路径下载文件 */ public void download(HttpServletResponse response,…
解决一下问题: 1.火狐浏览器下载文件,中文变乱码 2.IE浏览器下载文件,丢失文件扩展名或强制扩展名为".txt" 3.浏览器下载文件,文件名中的空格变成加号("+"),测试过程中chrome,firefox,ie均出现此问题 参考https://stackoverflow.com/questions/93551/how-to-encode-the-filename-parameter-of-content-disposition-header-in-http s…
from urllib.request import urlretrieve import sys import os prev_reported_download_percent = None # 首先定义下载 hook,作为 urllib.request.urlretrive 的关键字参数 def download_hook(count, block_size, total_size): """ 接口是写死的 """ global prev_…
本篇文章没有太多的源码,主要讲一下实现思路和技术原理 当使用Xshell或者SecureCRT终端工具时,我的所有文件传输工作都是通过lrzsz来完成的,主要是因为其简单方便,不需要额外打开sftp之类的工具,通过命令就可轻松搞定,在用了WebSSH之后一直在想,这么便捷的操作WebSSH能够实现吗? 答案是肯定的,能实现!这要感谢这个古老的文件传输协议:zmodem zmodem采用串流的方式传输文件,是xmodem和ymodem协议的改良进化版,具有传输速度快,支持断点续传.支持完整性校验等…
安装lrzszlrzsz这个软件,可以让我们直接从linux上,下载和上传文件的操作 yum install -y lrzsz11.上传文件通过输入 rz命令,可以弹出上传文件的对话框,然后就可以上传文件了. #输入rz命令,就会弹出上传的对话框了 2.下载文件下载文件的时候,需要制定要下载那一个文件,如果不带参数,是会报错的. #下载这个war包文件sz gerrit-2.14.7.war 3.上传过大文件失败问题文件过大,可以通过使用 rz -be的方式,并且去掉弹出的对话框中“Upload…
Linux下载——获取网络文件的命令 摘抄:本文主要学习了在Linux系统中如何下载文件的命令. wget命令 wget命令是一个用来下载文件的命令,可以在后台运行,在用户退出之后仍能继续下载,支持代理服务器和断点续传功能,能够自动递归远程主机的目录,找到合乎条件的文件并将其下载到本地硬盘上. 基本语法 wget [选项] 地址 选项说明 -b:启动后转入后台下载. -i 文件名:下载指定文件中的URL. -o 文件名:将下载文件重命名. -nd:不创建目录. -x:强制创建目录. -r:使用递…