下载大的文件+连接数据库语句

下载大的文件+连接数据库语句自己能写出来

<?php
ob_start();
/*
加入ob_start输出缓冲,因为header放后面出现warninig,
其中主要无关的信息不要echo输出,都会下载到客户端,导致下载后的文件不对~
*/
header("Content-type:text/html;charset=utf-8");
$file_name="1.jpg";
//用以解决中文不能显示出来的问题
$file_name=iconv("utf-8","gb2312",$file_name);
$file_sub_path=$_SERVER['DOCUMENT_ROOT']."/mynew/";
$file_path=$file_sub_path.$file_name;
//首先要判断给定的文件存在与否
if(!file_exists($file_path)){
    echo "没有该文件文件";
    return ;
}
$fp=fopen($file_path,"r");
$file_size=filesize($file_path);
//下载文件需要用到的头
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
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;//分批读
    ob_flush();//分批下载 冲刷php自身的缓冲
    flush();//冲刷服务器的缓冲
}
/*
对于小的文件直接即可 
fread($fp,$file_size);
*/
fclose($fp);

?>

下载文件需要设置header 4个头
这里写图片描述
其中content-type:appliction/octet-stream是二进制流
根据不同的下载文件类型,这里可以不同:

if (!preg_match("[tmp|txt|rar|pdf|doc]", $file_extension))exit ("非法资源下载");
switch ($file_extension) {
    case "exe" :
        $ctype = "application/octet-stream";
        break;
    case "zip" :
        $ctype = "application/zip";
        break;
    case "mp3" :
        $ctype = "audio/mpeg";
        break;
    case "mpg" :
        $ctype = "video/mpeg";
        break;
    case "avi" :
        $ctype = "video/x-msvideo";
        break;
    default :
        $ctype = "application/force-download";
}

连接数据库语句

<?php
$link = mysql_connect('localhost:3306', 'root', 'mysql');//创建数据库连接
if (!$link) {                                      //如果失败
   die('连接MySQL服务器失败: ' . mysql_error());       //显示出错信息
}
echo '连接MySQL服务器成功!';              //否则显示连接成功的信息
mysql_select_db("数据库名", $link);            //选择需要使用的数据库
mysql_query("set names utf8");
//1创建表
$sql = "CREATE TABLE fruit 
(
name varchar(15),
color varchar(15),
price float
)";                                             //创建数据表的SQL语句
mysql_query($sql, $con);                  //使用mysql_query执行SQL语句

//2插入
mysql_query("INSERT INTO fruit (name, color, price) VALUES ('". $_POST['name'] ."', '". $_POST['color'] ."', '". $_POST['prince'] ."')");      //插入结果

//3更新
mysql_query("UPDATE fruit SET price = '2.2' WHERE name = 'orange'");

//4查询表中数据,并以表格的形式显示出来 针对dql的语句返回结果,针对dml返回的bool
$result = mysql_query("SELECT * FROM fruit");  //读取fruit表的数据
echo "<table border='1'><tr><th>水果</th><th>颜色</th><th>价格</th></tr>";    //构造表头
while($row = mysql_fetch_array($result))    //循环查询结果集
{
    echo "<tr>";
    echo "<td>" . $row['name'] . "</td>";              //输出水果名
    echo "<td>" . $row['color'] . "</td>";             //颜色
    echo "<td>" . $row['price'] . "</td>";             //价格
    echo "</tr>";
}
echo "</table>";
mysql_free_result($result);//资源要尽早释放 $result结果全部拿到了客户端
mysql_close($link);		//最后关闭数据库连接  $link是重要的资源,尽量晚建立早释放
?>

Mysql_fetch_row( res):Mysqlfetchassoc( res)返回关联数组
Mysql_fetch_array( res)Mysqlfecthobject( res)把一行数据当作一个对象。

** resultmysqlfreeresult result后,即使关闭mysql_close( link)while result指向本地的取回的数据。释放资源是指将取回来的资源释放;而关闭连接是断开和mysql数据库的连接。即使没有

**mysql_close,系统也会自动关闭。**php手册上:通常不需要使用 mysql_close(),因为已打开的非持久连接会在脚本执行完毕后自动关闭。mysql_close() 不会关闭由 mysql_pconnect() 建立的持久连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值