欢迎各位兄弟 发布技术文章
这里的技术是共享的
<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';
我设置子目录为时间模式,但是子目录的名称,我如何获取呢
<?php
class 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!');
}
}
?>
复制代码
复制代码