其实上传图片和上传文件是一样的道理,我们只需要修改它上传文件的后缀名和允许上传文件的大小,因为文件的大小一般是比图片的大小要大小。当然上传文件我们是需要有上传类的,这里案例演示的类是在Think目录下的upload.class.php文件,详细代码如下:
上传html文件:upfile.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传文件</title>
</head>
<body>
<form action="{:U('Admin/Down/uploadfile')}" enctype="multipart/form-data" method="post" style="text-align:center;margin:30px;">
<input type="file" name="photo"/>
<input type="hidden" name="MAX_FILE_SIZE" value="204800" />
<input type="hidden" name="type" value="webfile"/>
<input type="submit" value="确定上传">
</form>
</body>
</html>
上传处理方法
public function uploadfile(){
$type=$_POST['type'];
$chat=$_POST['phpto_chat'];
$showname=$_POST['name'];
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg','pdf','doc','docx','txt');
// 设置附件上传类型
$upload->rootPath = './Upload/file/'; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
$upload->subName = array('date','Ymd');
$upload->saveName = array('uniqid','');
// $upload->saveName = '';
// 上传文件
$info = $upload->upload();
$data['pubtime'] = NOW_TIME;
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功
// die(var_dump($type));
$data['path'] = '/Upload/file/'.$info['photo']['savepath'].$info['photo']['savename'];
$size=$info['photo']['size'];
if($size>1024){
$lastsize=intval($size/1024).'KB';
}
if(($size/1024)>1024){
$lastsize=intval($size/1048576).'MB';
}
$downdata=array(
'title'=>$info['photo']['name'],
'type'=>$info['photo']['ext'],
'size'=>$lastsize,
'src'=>$data['path'],
'time'=>time(),
);
$result = $this->downModle->add($downdata); //保存数据库
if($result>0){
$this->success("添加成功!", U('Admin/down/index'), 1);
}else{
$this->error("添加失败!", U('Admin/down/index'), 1);
}
$this->alertOpenerClose($data['path']);
}
}
最后的效果
下载功能
public function downfile(){
if(isset($_GET['id'])){
$data=$this->downModle->where('id='.$_GET['id'])->field('src,title')->select();
$filename=$data[0]['src'];//获取文件的相对路径
$title=$data[0]['title'];//获取文件的名称,必须带后缀格式
}
Header( "Content-type: application/octet-stream ");
Header( "Accept-Ranges: bytes ");
Header( "Accept-Length: " .filesize($filename));
header( "Content-Disposition: attachment; filename= $title");//如果没带格式将生成不知道什么格式的文件
echo file_get_contents('http://www.100txy'.$filename);//用绝对路径
readfile($filename);
}