php下载文件的一种方式

<?php

ob_start();  

// $file_name="cookie.jpg";
$file_name="abc.jpg";

//用以解决中文不能显示出来的问题
$file_name=iconv("utf-8","gb2312",$file_name);
//$file_sub_path=$_SERVER[‘DOCUMENT_ROOT‘]."marcofly/phpstudy/down/down/";
$file_sub_path=$_SERVER[‘DOCUMENT_ROOT‘];
$file_path=$file_sub_path.$file_name;
//首先要判断给定的文件存在与否
if(!file_exists($file_path)){
echo "没有该文件文件";
return ;
}
$fp=fopen($file_path,"r");
$file_size=filesize($file_path);
//下载文件需要用到的头
ob_end_clean();

Header("Content-type: application/octet-stream");
//Header("Content-type: image/jpeg");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
//Header("Content-Disposition: attachment; filename=".basename($file_name));
 Header("Content-Disposition: attachment; filename=".$file_name);
$buffer=1024;
$file_count=0;
//向浏览器返回数据
while(!feof($fp) && $file_count<$file_size){
$file_con=fread($fp,$buffer);
$file_count+=$buffer;
echo $file_con;
}
@fclose($fp); 

exit(0);  

 /*
第二种方法
*/
/*
ob_start();
$file_name="123.jpg";
$file_name = iconv("utf-8","gb2312",$file_name);
if (!is_file($file_name)){
    echo "url error!";
} else {
    $ua = $_SERVER["HTTP_USER_AGENT"];
    if (preg_match("/MSIE/", $ua)) {
        $encoded_filename = urlencode(basename($file_name));
        $encoded_filename = str_replace("+", "%20", $encoded_filename);
        $con_dis = ‘Content-Disposition: attachment; filename="‘ . $encoded_filename . ‘"‘;
    } else if (preg_match("/Firefox/", $ua)) {
        $con_dis = ‘Content-Disposition: attachment; filename*="utf8\‘\‘‘ . basename($file_name) . ‘"‘;
    } else {
        $con_dis = ‘Content-Disposition: attachment; filename="‘ . basename($file_name) . ‘"‘;
    }
    $file = fopen($file_name, "r");
    //输入文件标签
    ob_end_clean();Header("Content-type: application/octet-stream");Header("Accept-Ranges: bytes");Header("Accept-Length: ".filesize($file_name));Header($con_dis);
    //输出文件内容
    //读取文件内容并直接输出到浏览器
    echo fread($file, filesize($file_name));@fclose($file);
    exit(0);
}
*/
/*
echo $_SERVER["HTTP_USER_AGENT"];
echo "<br/>";
echo $_SERVER[‘DOCUMENT_ROOT‘];
*/
?>
时间: 2024-08-03 19:24:07

php下载文件的一种方式的相关文章

Asp.Net 下载文件的几种方式

asp.net下载文件几种方式 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite 下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题. 代码如下: */ Response.ContentType = "application/x-zip-compressed";

Windows从web下载文件的几种方式

最近搞app自动化测试,需要自动从网页上下载apk用于测试,顺便学习了几种从web下载文件的方式. 一.PowerShell DownloadFile 命令 PowerShell 是一种winodws原生的脚本语言,使用很方便,可以实现很多复杂的功能. 首先启动PowerShell,可以在cmd里执行 start powershell,也可以按住shift建右击选择打开powershell 启动powershell后输入如下命令: $client = new-object System.Net.

【文件下载】Java下载文件的几种方式

1.以流的方式下载. public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径. File file = new File(path); // 取得文件名. String filename = file.getName(); // 取得文件的后缀名. String ext = filename.substring(filename.lastIn

java 从网上下载文件的几种方式 (转)

package com.github.pandafang.tool; import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.nio.channels.Channels;import java.nio.cha

C++服务器下载文件的两种方式

#include <afxinet.h>#include "wininet.h" #pragma comment( lib, "wininet.lib" ) string remoteIP = "http://www.test.com:8001"; string testIP = getDomain("IP"); string testPort = getDomain("PORT"); if (

Eclipse项目中引用第三方jar包时将项目打包成jar文件的两种方式

转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下: Manifest-Version: 1.0 Class-Path: lib/commons-codec.jar lib/commons-htt

C#中的Excel操作【1】——设置Excel单元格的内容,打开Excel文件的一种方式

前言 作为项目管理大队中的一员,在公司里面接触最多的就是Excel文件了,所以一开始就想从Excel入手,学习简单的二次开发,开始自己的编程之路! 程序界面 功能说明 打开文件按钮,可以由使用者指定要操作的Excel文件,并在后面的textBox中显示出文件路径. 设置单元格按钮,可以根据程序设置Excel文件的内容. 退出程序按钮,关闭窗体. 程序源代码 1 using System; 2 using System.Collections.Generic; 3 using System.Com

PHP下载文件的两种方法

PHP下载文件的两种方法与代码分享 转自:http://www.cnblogs.com/cfinder010/p/3197195.html PHP实现下载文件的两种方法.分享下,有用到的朋友看看哦. 方法一: <?php /** * 下载文件 * header函数 **/header('Content-Description: File Transfer');header('Content-Type: application/octet-stream');header('Content-Disp

java读取XML文件的四种方式

java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>河南省郑州市</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>河南省郑州市二七区&