当前位置: 网学 > 编程文档 > PHP > 正文

Fine Uploader文件上传组件应用介绍

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/06/18
e
* @param string $uploadDirectory
* @param string $replaceOldFile=true
* @returns array(''success''=>true) or array(''error''=>''error message'')
*/
function handleUpload($uploadDirectory, $replaceOldFile = FALSE){
if (!is_writable($uploadDirectory)){
return array(''error'' => "Server error. Upload directory isn''t writable.");
}

if (!$this->file){
return array(''error'' => ''No files were uploaded.'');
}

$size = $this->file->getSize();

if ($size == 0) {
return array(''error'' => ''File is empty'');
}

if ($size > $this->sizeLimit) {
return array(''error'' => ''File is too large'');
}

$pathinfo = pathinfo($this->file->getName());
$filename = $pathinfo[''filename''];
//$filename = md5(uniqid());
$ext = @$pathinfo[''extension''];// hide notices if extension is empty

if($this->allowedExtensions && !in_array(strtolower($ext), $this->allowedExtensions)){
$these = implode('', '', $this->allowedExtensions);
return array(''error'' => ''File has an invalid extension, it should be one of ''. $these . ''.'');
}

$ext = ($ext == '''') ? $ext : ''.'' . $ext;

if(!$replaceOldFile){
/// don''t overwrite previous files that were uploaded
while (file_exists($uploadDirectory . DIRECTORY_SEPARATOR . $filename . $ext)) {
$filename .= rand(10, 99);
}
}

$this->uploadName = $filename . $ext;

if ($this->file->save($uploadDirectory . DIRECTORY_SEPARATOR . $filename . $ext)){
return array(''success''=>true);
} else {
return array(''error''=> ''Could not save uploaded file.'' .
''The upload was cancelled, or server error encountered'');
}

}

在调用这个处理函数时.需要注意的是.传递的URL存储路径需要时绝对的.所以需要对传入路劲做一下格式化处理:
$uploadDirectory = Fine Uploader文件上传组件应用介绍_网学
浏览:
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号
SERVER[''DOCUMENT_ROOT'']."DS".$uploadDirectory;
对于is_writeable文件是否可写的判断.我个人认为还不够详细.is_writeable主要判断文件或目录是否存在.并可写才会返回true. 所以个人建议在is_writable前添加一个文件是否存在.这样更易于在客户端判断服务器端文件出错具体的情况:
复制代码 代码如下:
if (!file_exists($uploadDirectory)) {
return array(''error'' => "Server error. Upload directory dones''t exist.");
}

在保存文件操作前.可以看到.处理函数分别做了四次判断.分别判断了 上传文件的数量、文件上传的大小、文件上传大小是否超过上限、另外在上传过程.如果我们多次想服务器端上传同一个文件.发现Fine Uploder处理方式是.并非是重写.而是从10-99随机一个数字重写命名该文件.并保存到目录下.当保存文件成功后.则想服务器端返回一个Json数据其中包含IsSuccess来指定此次上传操作是否操作成功. IsSuccess参数作为客户端判断此时操作唯一参数.

在上传操作过程发信很多出现“increase post_max_size and upload_max_filesize to 10M”错误,其实针对这个问题.主要是上传文件配置超过php环境默认的2M.需要在php.ini文件中把post_max_size和upload_max_filesize两项的值改到10M以上,然后重启Apache即可.或是参考Php官网针对配置说明 修改php.ini配置文件.
至此整个Fine Uploader配置流程已经全部完成.点击选择文件时.会如下效果:
2013-01-04_191128
提示上传成功.当然更多的请参考官方给出演示demo.如上从Fine Uploader源码角度分析其实现原理.

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号