php.ini中文件上传功能配置选项说明
用文本工具(推荐EditPlus)打开php.ini 配置文件,查找 File Uploads ,在这个区域有以下3个选项:
file_uploads = On
是否允许HTTP文件上传。默认值为On允许HTTP文件上传,此选项不能设置为Off。
upload_tmp_dir =
文件上传的临时存放目录。如果没指定则PHP会使用系统默认的临时目录。该选项默认为空,此选项在手动配置PHP运行环境时,也容易遗忘,如果不配置这个选项,文件上传功能就无法实现,你必须给这个选项赋值,比如upload_tmp_dir = "d:/fileuploadtmp" ,代表在D盘目录下有一个fileuploadtmp目录,并且给这目录读写权限。
upload_max_filesize = 2M
上传文件的最大尺寸。这个选项默认值为2M,即文件上传的大小为2M,如果你想上传一个50M的文件,你必须设定 upload_max_filesize = 50M。
但是仅设置upload_max_filesize = 50M 还是无法实现大文件的上传功能,我们还必须修改php.ini文件中的 post_max_size 选项。
继续在 php.ini 中查找 Data Handling ,在这个区域有1个选项:
post_max_size = 8M
指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M。如果POST数据超出限制,那么$_POST和$_FILES将会为空。
要上传大文件,你必须设定该选项值大于upload_max_filesize选项的值,例如你设置了upload_max_filesize = 50M ,这里可以把post_max_size = 100M。
另外如果启用了内存限制,那么该值应当小于memory_limit 选项的值。
下载功能
1.如果是其他文件,直接在a标签的href属性中填写路径,可以下载。
2.如果是一个图片文件,那么直接在a标签的href属性中,填写路径是不能进行下载。
那么需要进行以下操作步骤:
PHP文件下载固定4句话:
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="'. basename($path) .'"');
header("Content-Length: ". filesize($path));
readfile($path);
所需的参数是:文件路径
思路:创建Doc/download方法,在方法中获取要下载的文件路径,调用上面4句话进行下载
- 修改文件下载地址,将文件的doc_id传递到download方法中
{volist name="sourcelist" id="list"} <div class="max-box"> <div class="image-box"><img src="/images/{$list.image}"></div> <div class="text-box"> <div class="text-left-box"> <p>{$list.name}</p> <p>{$list.description}</p> </div> <div class="text-right-box"> <a href="{:url('source/sourcedownload',['id'=>$list.id])}" class="btn btn-primary btn-sm shiny"> <i class="glyphicon glyphicon-save"></i> 下载 </a> </div> </div> <hr/> </div> {/volist}
- 创建Doc/download方法,接收doc_id,根据id查询对应的路径,再调用4句下载函数,进行下载操作。
function download(){
//接收公文id $id = I('get.id');
//根据公文id查询对应的附件路径 $data = D('Doc')->field('doc_file')->find($id);
$path = $data['doc_file'];
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="'. basename($path) .'"');
header("Content-Length: ". filesize($path));
readfile($path);
}