首先说上传
上传比较简单
<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 );
}
}
?>
上面的就是下载的后台方法,下载上传都可以完成,但是也有瑕疵,就是有些浏览器下不支持中文,会出现乱码,这个就是自己发挥吧,网上一大堆