thinkphp对文件的上传,删除,下载操作
工作需要,整理一下最近对php的学习经验,希望能对自己有帮助或者能帮助那些需要帮助的人。
thinkphp对文件的操作,相对来说比较简单,因为tp封装好了一个上传类Upload.class.php
废话不多说,直接上真的。
源码分享地址:http://pan.baidu.com/s/1qXuMGGk
建立一个数据库:

username:上传者。
time:上传时间
size:文件大小。
path:路径。
filename:上传的文件名。
savename:上传后保存的加密文件名称。
对文件的上传,操作,先建立可视化界面。
如图:

视图代码不贴了,核心代码如下:
但是提交的form表单有一个是必须声明的:
<form action="" method="post" enctype="multipart/form-data">
public function addFile(){
$data['username'] = I('name');
$data['time'] = time();
$config = array(
'maxSize'=> 31457280,
'rootPath' => './Static/',
'savePath'=>'',
'saveRule'=>'time',
'allowExts'=>'array()',
);
$upload = new \Think\Upload($config);
$info = $upload->upload();
if(!$info){
$this->error('添加失败......',U('Upload/index'));
}else{
$imgurl = '/Static/'.$info['path']['savepath'].$info['path']['savename'];
}
$size = $info['path']['size']/1024;
$data['path'] = $imgurl;
$data['size'] = sprintf("%.2f", $size);
$data['filename'] = $info['path']['name'];
$data['savename'] = $info['path']['savename'];
$obj = M('upload');
$res = $obj->data($data)->add();
if($res){
$this->success('上传成功!!',U('Upload/index'));
}else{
$this->error('上传失败!!',U('Upload/index'));
}
}
点击提交,文件即可上传成功。
另外是文件的删除了,记住一个方法就可以很好解决一个问题,就是unlink();
代码为:
//文件删除
public function delFile(){
$where['id'] = I('id');
$obj = M('upload');
$list = $obj->where($where)->find();
if(empty($list)){
$this->error('文件不存在或者已经被删除',U('Upload/fileList'));
}else{
$del = $obj->where($where)->delete();
$path = $_SERVER['DOCUMENT_ROOT']."power".$list['path'];//找到文件地址,echo即可 $res = unlink($path);//删除文件
if($res){
$this->success('文件成功删除!!',U('Upload/fileList'));
}else{
$this->error('文件删除失败或者文件不存在!!',U('Upload/fileList'));
}
}
}
更新文件操作:
//文件的更新,编辑操作
public function editFileController(){
$where['id'] = I('id');
$oldpath = $_SERVER['DOCUMENT_ROOT']."power".I('oldpath');//获取原文件存放地址
unlink($oldpath); //更新文件操作
$config = array(//配置上传文件信息
'maxSize'=> 31457280,
'rootPath' => './Static/',
'savePath'=>'',
'saveRule'=>'time',
'allowExts'=>'array()',
); $upload = new \Think\Upload($config);
$info = $upload->upload();
if(!$info){
$this->error('文件更新失败......',U('Upload/index?$w here[id]'));
}else{
$imgurl = '/Static/'.$info['path']['savepath'].$info['path']['savename'];
} //更新的数据
$data['username'] = I('username');//文件上传者
$data['time'] = time();//文件更新日期
$data['path'] = $imgurl;//文件路径
$data['filename'] = $info['path']['name'];//文件名称 $obj = M('upload'); $res = $obj->where($where)->data($data)->save(); if($res){
$this->success('更新成功。。。',U('Upload/fileList'));
}else{
$this->error('更新失败。。。',U('Upload/fileList'));
}
}
下载文件操作:
//文件下载
public function downloadFile(){
$where['data'] = I('id');
$obj = M('upload');
$list = $obj->where($where)->find();
if(empty($list)){
$this->success('文件不存在或者已经被删除',U('Upload/fileList'));
}else{
$path = $_SERVER['DOCUMENT_ROOT']."power".$list['path'];//找到文件路径
$file_name = $list['filename'];
if(!file_exists($path)){
$this->error("文件不存在!",U('Upload/fileList'));
}
$fp = fopen($path,'r'); $file_size=filesize($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;
}
fclose($fp);
}
}
既可以成功的操作了。不足之处,请大家指正。
thinkphp对文件的上传,删除,下载操作的更多相关文章
- JavaWeb中文件的上传和下载
JavaWeb中文件的上传和下载 转自: JavaWeb学习总结(五十)——文件上传和下载 - 孤傲苍狼 - 博客园https://www.cnblogs.com/xdp-gacl/p/4200090 ...
- java实现ftp文件的上传与下载
最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...
- 在SpringMVC框架下实现文件的 上传和 下载
在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...
- SecureCRT使用sz和rz命令进行文件的上传和下载
SecureCRT可以使用sz和rz命令进行文件的上传和下载. sz文件下载: 格式:sz 文件名称 即可将服务器的文件下载至本地. rz文件上传: 格式:rz 文件名称 即可将本地文件上传至服务器. ...
- 使用FTPClient进行文件服务器内文件的上传和下载
我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手.我在项目开发的过程中主要用到了文件的上传和下载功能,下面将我开发的代码贴出 ...
- iOS开发中文件的上传和下载功能的基本实现-备用
感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...
- Apache FtpServer 实现文件的上传和下载
1 下载需要的jar包 Ftp服务器实现文件的上传和下载,主要依赖jar包为: 2 搭建ftp服务器 参考Windows 上搭建Apache FtpServer,搭建ftp服务器 3 主要代码 在ec ...
- 初学Java Web(7)——文件的上传和下载
文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...
- java web(四):request、response一些用法和文件的上传和下载
上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...
- 黏包-黏包的成因、解决方式及struct模块初识、文件的上传和下载
黏包: 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种显现就是黏包. 只有TCP协议中才会产生黏包,UDP协议中不会有黏包(udp协议中数 ...
随机推荐
- Keepalived实现Redis Failover
一.环境说明 操作系统版本:RHEL 5.4_64 redis版本:2.8.17 keepalived版本:1.1.15 master:10.142.130.81 slave: 10.142.130 ...
- 【模拟】Codeforces 711B Chris and Magic Square
题目链接: http://codeforces.com/problemset/problem/711/B 题目大意: N*N的矩阵,有且只有一个0,求要把这个矩阵变成幻方要填什么正数.无解输出-1.幻 ...
- 【数论】FOJ 2238 Daxia & Wzc's problem
题目链接: http://acm.fzu.edu.cn/problem.php?pid=2238 题目大意: 已知等差数列A(0)的首项a和公差d,求出数列A(0)前n项和,得到新数列A(1);以此类 ...
- 光学字符识别OCR
1.功能: 光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程 2.典型应用: 名片扫描 3 ...
- CodeForces 592B
题目链接: http://codeforces.com/problemset/problem/592/B 这个题目没啥说的,画图找规律吧,哈哈哈 程序代码: #include <cstdio&g ...
- zoj 1372
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1372 #include<iostream> #include& ...
- [Java] JavaMail 简单案例
网易提供了免费的 SMTP / POP3服务,可用于编程测试,详情见 什么是POP3.SMTP和IMAP? 只需要拥有一个网易邮箱账号,并开启该账号的 SMTP / POP3 功能,便可以通过程序发送 ...
- Apache HBase 2015年发展回顾与未来展望
编者按:高可用架构推出 2015 年度回顾系列文章,分享在架构领域具有典型意义的年度案例,本文由张虔熙分享.转载请注明来自高可用架构公众号「ArchNotes」. 张虔熙,Hulu 网,专注于分布 ...
- Java调用R(三)_系统命令调用
java通过配置的系统命令Rscript直接调用R脚本. 优点:R脚本和Java代码完全分离 缺点:R中变量不能控制 1. Java本地能够成功调用. public void CallR() { Ru ...
- XPath与Xquery
XPath 和 XQuery 在某些方面很相似.XPath 还是 XQuery 完整不可分割的一部分.这两种语言都能够从 XML 文档或者 XML 文档存储库中选择数据.本文简要介绍了 XPath 和 ...