thinkphp文件上传与下载

来源:互联网 发布:网络交友新时空ppt 编辑:程序博客网 时间:2024/06/05 08:04

首先说上传

  上传比较简单 

<form action="上传的地址" method="post enctype="multipart/form-data">//<span style="font-family: Verdana, Arial, 宋体; line-height: 18px; background-color: rgb(249, 249, 249);"> enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,需要使用 "multipart/form-data"。</span><input name="file" type="file" /><input name="file" type="submit" value="upload"/></form>

以上就是HTML内容,很简单,就是一个form表单

有了上面的表单,在后台之后处理下前台传过来的内容就可以,在action中添加下面的方法

 public function upload() {    import('ORG.Net.UploadFile');    $upload = new UploadFile();// 实例化上传类    $upload->maxSize  = 3145728 ;// 设置附件上传大小    $upload->allowExts  = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型    $upload->savePath =  './Public/Uploads/';// 设置附件上传目录    if(!$upload->upload()) {// 上传错误提示错误信息        $this->error($upload->getErrorMsg());    }else{// 上传成功        $this->success('上传成功!');<span style="font-family: Arial, Helvetica, sans-serif;">//这个地方按需求决定是否添加到数据库中</span>   } }
注释,要是需要把文件添加到数据库中,就需要在上穿成个的代码块另行编写 了


下载,在thinkphp中没有提供,只有一个SAE的解决方案,总感觉不好用就自己找原生的php,

先说没有把文件信息保存在数据库中的情况:

首先在action里面添加下面的方法

 public function upload() {  $filename=$_GET["filename"];  download($filename);}

这个download我写成了公共方法,哪里都可以调用,代码如下

<? function download($filename){$filedir= "./up/";        //下载文件存放目录  //检查文件是否存在  if (! file_exists ( $<span style="font-family: Arial, Helvetica, sans-serif;">filedir</span>. $filename )) {      echo "the file is not found";  } else {      //打开文件      $file = fopen ( $filedir . $filename, "r" );      //输入文件标签       Header ( "Content-type: application/octet-stream" );      Header ( "Accept-Ranges: bytes" );      Header ( "Accept-Length: " . filesize ( $filedir . $filename ) );      Header ( "Content-Disposition: attachment; filename=" . $filename );      //输出文件内容       //读取文件内容并直接输出到浏览器      echo fread ( $file, filesize ( $filedir . $filename ) );      fclose ( $file );    }  }?> 

上面的就是下载的后台方法,下载上传都可以完成,但是也有瑕疵,就是有些浏览器下不支持中文,会出现乱码,这个就是自己发挥吧,网上一大堆

0 0