欢迎各位兄弟 发布技术文章
这里的技术是共享的
<form id="upload" method='post' action="!-URL-!/upload/" enctype="multipart/form-data"> <input name="image" type="file" /> <input type="submit" value="提交" > </form>复制代码// 文件上传 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('上传成功!'); } }复制代码 import('ORG.Net.UploadFile'); $upload = new UploadFile();// 实例化上传类复制代码| maxSize | 文件上传的最大文件大小(以字节为单位)默认为-1 不限大小 |
| savePath | 文件保存路径(必须) |
| saveRule | 上传文件的保存规则,必须是一个无需任何参数的函数名,例如可以是 time、 uniqid com_create_guid 等,但必须能保证生成的文件名是唯一的,默认是uniqid |
| hashType | 上传文件的哈希验证方法,默认是md5_file |
| autoCheck | 是否自动检测附件,默认为自动检测 |
| uploadReplace | 存在同名文件是否是覆盖 |
| allowExts | 允许上传的文件后缀(留空为不限制),使用数组设置,默认为空数组 |
| allowTypes | 允许上传的文件类型(留空为不限制),使用数组设置,默认为空数组 |
| thumb | 是否需要对图片文件进行缩略图处理,默认为false |
| thumbMaxWidth | 缩略图的最大宽度,多个使用逗号分隔 |
| thumbMaxHeight | 缩略图的最大高度,多个使用逗号分隔 |
| thumbPrefix | 缩略图的文件前缀,默认为thumb_ |
| thumbSuffix | 缩略图的文件后缀,默认为空 |
| thumbPath | 缩略图的保存路径,留空的话取文件上传目录本身 |
| thumbFile | 指定缩略图的文件名 |
| thumbExt | 指定缩略图的扩展名 |
| thumbRemoveOrigin | 生成缩略图后是否删除原图 |
| autoSub | 是否使用子目录保存上传文件 |
| subType | 子目录创建方式,默认为hash,可以设置为hash、date或者custom |
| subDir | 子目录名称 subType为custom方式后有效 |
| dateFormat | 子目录方式为date的时候指定日期格式 |
| hashLevel | 子目录保存的层次,默认为一层 |
//设置附件上传目录$upload->savePath = './Uploads/'; //设置需要生成缩略图,仅对图像文件有效$upload->thumb = true; //设置需要生成缩略图的文件后缀$upload->thumbPrefix = 'm_,s_'; //生产2张缩略图 //设置缩略图最大宽度$upload->thumbMaxWidth = '200,50'; //设置缩略图最大高度$upload->thumbMaxHeight = '200,50';复制代码import('ORG.Net.UploadFile');$config['savePath'] = './Uploads/';$config['thumb'] = true;$config['thumbPrefix'] = 'm_,s_';$config['thumbMaxWidth'] = '200,50';$config['thumbMaxHeight'] = '200,50';$upload = new UploadFile($config);// 实例化上传类并传入参数复制代码| key | 附件上传的表单名称 |
| savepath | 上传文件的保存路径 |
| name | 上传文件的原始名称 |
| savename | 上传文件的保存名称 |
| size | 上传文件的大小 |
| type | 上传文件的MIME类型 |
| extension | 上传文件的后缀类型 |
| hash | 上传文件的哈希验证字符串 |
//取得成功上传的文件信息$info = $upload->getUploadFileInfo();$model = M('Photo'); //保存当前数据对象$data['image'] = $info[0]['savename'];$data['create_time'] = NOW_TIME;$model->add($data);复制代码
<input type='file' name='image'>复制代码<input type='file' name='image1'> <input type='file' name='image2'> <input type='file' name='image3'>复制代码import("ORG.Net.UploadFile");$upload = new UploadFile(); foreach ($_FILES as $key=>$file){ if(!empty($file['name'])) { $upload->autoSub = true; $upload->subType = 'date'; $info = $upload->uploadOne($file); if($info){ // 保存附件信息 M('Photo')->add($info); }else{ // 上传错误 $this->error($upload->getErrorMsg()); } } }复制代码$upload->saveRule = 'time'; // 采用时间戳命名复制代码$upload->saveRule = 'com_create_guid'; // 采用GUID序列命名复制代码$upload->saveRule = 'myfun'; // 采用自定义函数命名复制代码$upload->saveRule = time().'_'.mt_rand();复制代码$upload->saveRule = '';复制代码$upload->subType = 'hash';$upload->hashLevel = 2;复制代码$upload->subType = 'date';$upload->dateFormat = 'Y-m-d';复制代码$upload->subType = 'custom';$upload->subDir = get_user_id();复制代码//设置需要生成缩略图,仅对图像文件有效$upload->thumb = true; //设置需要生成缩略图的文件前缀$upload->thumbPrefix = 'm_,s_'; //生产2张缩略图 //设置缩略图最大宽度$upload->thumbMaxWidth = '200,50'; //设置缩略图最大高度$upload->thumbMaxHeight = '200,50'; //设置生成缩略图后移除原图$upload->thumbRemoveOrigin = true;复制代码$upload->thumbPath = './Uploads/thumb/';复制代码// 设置缩略图的固定后缀$upload->thumbExt = 'jpg';复制代码
我扩展类库中确定有那个类
换成命名空间应该怎样写?
$info[] = $file;复制代码复制代码复制代码复制代码复制代码复制代码复制代码Array( [0] => Array ( [name] => alum.jpg [type] => image/jpeg [size] => 13901 [extension] => jpg [savepath] => ./Uploads/ [savename] => 537f731e4d568.jpg [hash] => 05819ad39601c0c2a7c6bb4e9bd6185a ))复制代码复制代码复制代码复制代码复制代码复制代码复制代码是这个意思,把 $info[] = $file;改成 $info = $file;就是了。
$upload->thumbPrefix = 'm_,s_'; //生产2张缩略图//设置需要生成缩略图的文件后缀
$upload->thumbMaxWidth = '200,50'; //设置缩略图最大宽度
$upload->thumbMaxHeight = '200,50'; //设置缩略图最大高度
仔细看类文件
<td class="tLeft"><input type="file" class="huge bLeftRequire"name="m_image" ></td>
<td class="tLeft"><input type="file" class="huge bLeftRequire" name="l_image"></td>
就不行。只能写一个上传才行,
<input type='file' name='image'>复制代码复制代码复制代码复制代码上传到数据库只有一条图片数据啊
(设置大小/原图大小)*原图大小,按照这个意思不就是我设置的大小吗!
'zipImages' => false,// 压缩图片文件上传
这个参数如何使用?
我现在有一个需求,就是我拍摄的照片比较大(2000*3000),上传到服务器的图片只需要很小的图片就可以了(200*300)。
解释一下,这里不是指把大图上传到服务器再生成小的缩略图。
我需要上传的是一个比较小的图片(因为带宽有限,提升上传的速度)。
目前我知道的一个方法是,前端用HTML5图像处理功能把大图重新绘制一个小的,再上传这个小的图片。
请教,这里“压缩图片文件上传”是指这个意思么?
一开始只显示一个上传栏,但是旁边有增加上传栏的功能,我可以根据需要来增加,同时,增加的旁边也有删除的键,这样就可以根据需要来选择了
<script type='text/javascript'>
function add_item()
{
var nu=$("#nu").val();
nu++;
var msg='';
msg+="<tr id='"+nu+"' ><td><input type='file' id='nu_"+nu+"' /></td>";
msg+="<td><a href='javascript:void(0)' onclick='del_item("+nu+")'>[-]</a><input type='file' size='4' value='"+nu+"' /></td></tr>";
$("#table").append(msg);
$("#nu").val(nu);
}
function del_item(id)
{
$("#"+id).remove();
}
</script>
<table border="1" id="table">
<input type="hidden" id="nu" value="0" />
<tr>
<td>文本框序号</td>
<td><a href="javascript:add_item();">[+]</a></td>
</tr>
<tr>
<td><input type='file' /></td>
<td>[-]</td>
</tr>
</table>
现在有这么一个案例,举例说有三个上传文件的表单一起被上传之后,其中第一个和第三个表单都是选择了文件的,第二个没有选择上传文件。这三个表单的名字都被起名为images[],提交之后打印出来的上传结果是个二维数组,这里问题就出来了,显示的是array(0=>array(啥啥啥),1=>array(啥啥啥)),能否做成不排除空文件表单,我希望上传之后打印的结果是array(0=>array(啥啥啥),1=>array(),2=>array(啥啥啥)),不知道能否实现,希望官方能给个话,谢谢啦!
$upload->subType = 'date';
$upload->dateFormat = 'Y-m-d';
我设置子目录为时间模式,但是子目录的名称,我如何获取呢
<?phpclass FileAction extends Action{public function index(){$File = M('File');$list = $File->select();$this->assign('list',$list);$this->display();}//文件上传的地址提交给它,并且上传完成之后返回一个信息,让其写入数据库public function upload(){//导入 实例化上传类 配置import("ORG.Net.UploadFile");$upload=new UploadFile();$upload->maxSize = 1000000; //文件上传的最大文件大小(以字节为单位)默认为-1 不限大小$upload->allowExts = array('jpg','gif','png','jpeg'); //允许上传的文件后缀(留空为不限制),使用数组设置,默认为空数组$upload->allowTypes = array(); //允许上传的文件类型(留空为不限制),使用数组设置,默认为空数组$upload->savePath = './Public/Uploads/'; //文件保存路径,如果留空会取UPLOAD_PATH常量定义的路径//判断上传是否成功if(!$upload->upload()){$this->error($upload->getErrorMsg());}else{$info = $upload->getUploadFileInfo(); //获取图片的相关信息//dump($info); exit(); //可以输出看下$info类型}//保存表单数据 包括附件数据/*如果单个图片上传,把for循环去掉,$info["$i"]["savename"];改成$info[0]["savename"];*/for($i=0;$i<count($info);$i++){$File = D('File');$File->create();$File->filename = $info["$i"]["savename"];$File->add();}$this->success('Mysql success!');}}?>复制代码复制代码