当前位置:首页 » 文件管理 » thinkphp5文件上传

thinkphp5文件上传

发布时间: 2022-10-31 18:29:23

❶ thinkphp 上传文件的时候不支持flv 格式的怎么解决啊

①$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
这样写试试。
②不知道你的Thinkphp是哪个版本的。你去看下上传文件的类里面具体怎么写的,是UploadFile.class.php文件。看下protected function error($errorNo) 这个方法,也就是提示错误的函数,看写“非法数据对象”是哪里出错了。有可能不是因为类型的原因。
(不行再问我,QQ617762749)

❷ tp5中调用文件上传方法报Call to a member function move() on string的处理方法。

你的对象实例化失败了。 你调用了一个类内方法 Create(),但是由于对象实例化失败,无法调用,所以报致命错误

❸ thinkphp3.2 多文件上传时 上传错误提示

$upload=newThinkUpload();//实例化上传类
$upload->maxSize=3145728;//设置附件上传大小
$upload->exts=array('jpg','gif','png','jpeg');//设置附件上传类型
$upload->rootPath='./Uploads/';//设置附件上传根目录
$upload->savePath='';//设置附件上传(子)目录
//上传文件
$info=$upload->upload();
if(!$info){//上传错误提示错误信息
$this->error($upload->getError());
}else{//上传成功
$this->success('上传成功!');
}

❹ thinkphp5 上传多个文件需要实例化么

<tr>
<td><inputtype='file'name='video[]'/></td>
<td><inputtype='file'name='video[]'/></td>
<td><inputtype='file'name='video[]'/></td>
</tr>
<tr>
<td><inputtype='file'name='pic[]'/></td>
<td><inputtype='file'name='pic[]'/></td>
<td><inputtype='file'name='pic[]'/></td>
</tr>
这种不同name的多文件上传,怎么改UploadFile.class.php类,来实现多name多文件上传
index.html
<formmethod="POST"enctype="multipart/form-data"action="{:U('Index/upload')}">
<tr>
<td>flv文件</td>
<td><inputtype="file"name="flv"/></td>
</tr>
<tr>
<td>视频压缩文件</td>
<td><inputtype="file"name="movie"/></td>
</tr>
<tr>
<td>缩略图</td>
<td><inputtype="file"name="img"/></td>
</tr>
<inputtype="submit"value="上传"/>
</form>
复制代码
UploadFile.class.php162行
if(!is_dir($savePath)){
//检查目录是否编码后的
if(is_dir(base64_decode($savePath))){
$savePath=base64_decode($savePath);
}else{
//尝试创建目录
if(!mkdir($savePath)){
$this->error='上传目录'.$savePath.'不存在';
returnfalse;
}
}
}else{
if(!is_writeable($savePath)){
$this->error='上传目录'.$savePath.'不可写';
returnfalse;
}
}
复制代码
改成
if(!is_array($savePath)){
if(!is_dir($savePath)){
//检查目录是否编码后的
if(is_dir(base64_decode($savePath))){
$savePath=base64_decode($savePath);
}else{
//尝试创建目录
if(!mkdir($savePath)){
$this->error='上传目录'.$savePath.'不存在';
returnfalse;
}
}
}else{
if(!is_writeable($savePath)){
$this->error='上传目录'.$savePath.'不可写';
returnfalse;
}
}
}
复制代码
UploadFile.class.php194行
$file['savepath']=$savePath;
复制代码
改成
$file['savepath']=is_array($savePath)?$savePath[$key]:$savePath;
复制代码
Publicfunctionupload(){
import('Org.Net.UploadFile');
$upload=newOrgNetUploadFile();//实例化上传类
$upload->maxSize=3145728;//设置附件上传大小
$upload->allowExts=array('jpg','gif','png','jpeg');//设置附件上传类型
//$upload->savePath='./Public/Uploads/';//设置附件上传目录
$upload->savePath=array('flv'=>'./Public/Uploads/flv/','movie'=>'./Public/Uploads/movie/','img'=>'./Public/Uploads/img/');
if(!$upload->upload()){
$this->error($upload->getErrorMsg());
}else{//上传成功获取上传文件信息
$info=$upload->getUploadFileInfo();
}

}
复制代码
$upload->savePath改为数组
./Public/Uploads/flv/
./Public/Uploads/movie/
./Public/Uploads/img/
这3个目录要手动创建这样在就变成不影响原来程序的
情况下实现上传多个文件到不同的目录了

❺ 请问你有Thinkphp下使用Bootstrap File Input多文件上传的案例吗

现在我们开始使用插件
(1)首先引入文件
<!--css文件-->
<link href="__PUBLIC__/css/fileinput.css" media="all" rel="stylesheet" type="text/css" />

<link href="__PUBLIC__/css/bootstrap.min.css?v=3.3.6" rel="stylesheet">

<!--js文件-->
<script src="__PUBLIC__/js/jQuery.min.js" type="text/javaScript"></script>
<script src="__PUBLIC__/js/bootstrap.min.js?v=3.3.6"></script>
<script src="__PUBLIC__/js/plugins/fileinput.js" type="text/javascript"></script>
<script src="__PUBLIC__/js/fileinput.min.js" type="text/javascript"></script>

(2)初始化控件
<input id="file" name="file_data[]" type="file" multiple data-preview-file-type="any" data-show-caption="true">
data-preview-file-type="any" :设置之后可以上传多个文件
name="file_data[]" :因为要上传多个文件所以要用数组
(3)js初始化控件
$("#file").fileinput({
uploadUrl: "{:U('Admin/Img/imgupload2')}",// 上传路径
uploadAsync: false,//是否异步传输
maxFileCount: 5//最大文件上传数量
}).on('filebatchpreupload', function(event, data, id, index) {

}).on('filebatchuploadsuccess', function(event, data) {//上传成功从服务器端返回的数据(即保存的文件名称)
for(var i=0;i<data.response.length;i++){
alert(data.response[i].flag);
}
});
(4)thinkphp对应的方法
public function imgupload2(){
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Public/Uploads/';// 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
$info = $upload->upload(array($_FILES['file_data'])); // 上传文件
$i=0;
if(!$info) {// 上传错误提示错误信息
$a[$i]['flag']="no";
$this->ajaxReturn($a,'JSON');
}else{// 上传成功 获取上传文件信息
foreach($info as $file){
$a[$i]['flag']=$file['savepath'].$file['savename'];
$i++;
}
}
$this->ajaxReturn($a,'JSON');
}

❻ thinkphp5.0.5怎么自定义命名上传文件

ThinkPHP5.0内置了一个文件处理类 hinkFile,内置的文件上传操作也是调用了该类进行处理的。

File类继承了PHP的SplFileObject类,因此可以调用SplFileObject类所有的属性和方法。

表单代码:

<formaction="/index/index/upload"enctype="multipart/form-data"method="post">
<inputtype="file"name="image"/><br>
<inputtype="submit"value="上传"/>
</form>

控制器代码:

publicfunctionupload(){
//获取表单上传文件例如上传了001.jpg
$file=request()->file('image');
//移动到框架应用根目录/public/uploads/目录下
$info=$file->move(ROOT_PATH.'public'.DS.'uploads');
if($info){
//成功上传后获取上传信息
//输出jpg
echo$info->getExtension();
//输出20160820/.jpg
echo$info->getSaveName();
//输出.jpg
echo$info->getFilename();
}else{
//上传失败获取错误信息
echo$file->getError();
}
}

move方法成功的话返回的是一个SplFileInfo对象,你可以对上传后的文件进行后续操作,比如改名。

❼ thinkphp5 怎么接受zyupload,上传的图片

引入这个类就可以

<?php
//视图表单
//支持多张图片上传
classupload{
var$dir;//附件存放物理目录
var$time;//自定义文件上传时间
var$allow_types;//允许上传附件类型
var$field;//上传控件名称
var$maxsize;//最大允许文件大小,单位为KB
var$thumb_width;//缩略图宽度
var$thumb_height;//缩略图高度
var$watermark_file;//水印图片地址
var$watermark_pos;//水印位置
var$watermark_trans;//水印透明度
//构造函数
//$types:允许上传的文件类型,$maxsize:允许大小,$field:上传控件名称,$time:自定义上传时间
functionupload($types='jpg|png',$maxsize=1024,$field='attach',$time=''){
$this->allow_types=explode('|',$types);
$this->maxsize=$maxsize*1024;
$this->field=$field;
$this->time=$time?$time:time();
}
//设置并创建文件具体存放的目录
//$basedir:基目录,必须为物理路径
//$filedir:自定义子目录,可用参数{y}、{m}、{d}
functionset_dir($basedir,$filedir=''){
$dir=$basedir;
!is_dir($dir)&&@mkdir($dir,0777);
if(!empty($filedir)){
$filedir=str_replace(array('{y}','{m}','{d}'),array(date('Y',$this->time),date('m',$this->time),date('d',$this->time)),strtolower($filedir));//用string_replace把{y}{m}{d}几个标签进行替换
$dirs=explode('/',$filedir);
foreach($dirsas$d){
!empty($d)&&$dir.=$d.'/';
!is_dir($dir)&&@mkdir($dir,0777);
}
}
$this->dir=$dir;
}
//图片缩略图设置,如果不生成缩略图则不用设置
//$width:缩略图宽度,$height:缩略图高度
functionset_thumb($width=0,$height=0){
$this->thumb_width=$width;
$this->thumb_height=$height;
}
//图片水印设置,如果不生成添加水印则不用设置
//$file:水印图片,$pos:水印位置,$trans:水印透明度
functionset_watermark($file,$pos=6,$trans=80){
$this->watermark_file=$file;
$this->watermark_pos=$pos;
$this->watermark_trans=$trans;
}
/*—————————————————————-
执行文件上传,处理完返回一个包含上传成功或失败的文件信息数组,
其中:name为文件名,上传成功时是上传到服务器上的文件名,上传失败则是本地的文件名
dir为服务器上存放该附件的物理路径,上传失败不存在该值
size为附件大小,上传失败不存在该值
flag为状态标识,1表示成功,-1表示文件类型不允许,-2表示文件大小超出
—————————————————————–*/
functionexecute(){
$files=array();//成功上传的文件信息
$field=$this->field;
$keys=array_keys($_FILES[$field]['name']);
foreach($keysas$key){
if(!$_FILES[$field]['name'][$key])continue;
$fileext=$this->fileext($_FILES[$field]['name'][$key]);//获取文件扩展名
$filename=date('Ymdhis',$this->time).mt_rand(10,99).'.'.$fileext;//生成文件名
$filedir=$this->dir;//附件实际存放目录
$filesize=$_FILES[$field]['size'][$key];//文件大小
//文件类型不允许
if(!in_array($fileext,$this->allow_types)){
$files[$key]['name']=$_FILES[$field]['name'][$key];
$files[$key]['flag']=-1;
continue;
}
//文件大小超出
if($filesize>$this->maxsize){
$files[$key]['name']=$_FILES[$field]['name'][$key];
$files[$key]['name']=$filesize;
$files[$key]['flag']=-2;
continue;
}
$files[$key]['name']=$filename;
$files[$key]['dir']=$filedir;
$files[$key]['size']=$filesize;
//保存上传文件并删除临时文件
if(is_uploaded_file($_FILES[$field]['tmp_name'][$key])){
move_uploaded_file($_FILES[$field]['tmp_name'][$key],$filedir.$filename);
@unlink($_FILES[$field]['tmp_name'][$key]);
$files[$key]['flag']=1;
//对图片进行加水印和生成缩略图,这里演示只支持jpg和png(gif生成的话会没了帧的)
if(in_array($fileext,array('jpg','png'))){
if($this->thumb_width){
if($this->create_thumb($filedir.$filename,$filedir.'thumb_'.$filename)){
$files[$key]['thumb']='thumb_'.$filename;//缩略图文件名
}
}
$this->create_watermark($filedir.$filename);
}
}
}
return$files;
}
//创建缩略图,以相同的扩展名生成缩略图
//$src_file:来源图像路径,$thumb_file:缩略图路径
functioncreate_thumb($src_file,$thumb_file){
$t_width=$this->thumb_width;
$t_height=$this->thumb_height;
if(!file_exists($src_file))returnfalse;
$src_info=getImageSize($src_file);
//如果来源图像小于或等于缩略图则拷贝源图像作为缩略图,免去操作
if($src_info[0]<=$t_width&&$src_info[1]<=$t_height){
if(!($src_file,$thumb_file)){
returnfalse;
}
returntrue;
}
//按比例计算缩略图大小
if(($src_info[0]-$t_width)>($src_info[1]-$t_height)){
$t_height=($t_width/$src_info[0])*$src_info[1];
}else{
$t_width=($t_height/$src_info[1])*$src_info[0];
}
//取得文件扩展名
$fileext=$this->fileext($src_file);
switch($fileext){
case'jpg':
$src_img=ImageCreateFromJPEG($src_file);break;
case'png':
$src_img=ImageCreateFromPNG($src_file);break;
case'gif':
$src_img=ImageCreateFromGIF($src_file);break;
}
//创建一个真彩色的缩略图像
$thumb_img=@ImageCreateTrueColor($t_width,$t_height);
//ImageCopyResampled函数拷贝的图像平滑度较好,优先考虑
if(function_exists('imageresampled')){
@ImageCopyResampled($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);
}else{
@ImageCopyResized($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);
}
//生成缩略图
switch($fileext){
case'jpg':
ImageJPEG($thumb_img,$thumb_file);break;
case'gif':
ImageGIF($thumb_img,$thumb_file);break;
case'png':
ImagePNG($thumb_img,$thumb_file);break;
}
//销毁临时图像
@ImageDestroy($src_img);
@ImageDestroy($thumb_img);
returntrue;
}
//为图片添加水印
//$file:要添加水印的文件
functioncreate_watermark($file){
//文件不存在则返回
if(!file_exists($this->watermark_file)||!file_exists($file))return;
if(!function_exists('getImageSize'))return;
//检查GD支持的文件类型
$gd_allow_types=array();
if(function_exists('ImageCreateFromGIF'))$gd_allow_types['image/gif']='ImageCreateFromGIF';
if(function_exists('ImageCreateFromPNG'))$gd_allow_types['image/png']='ImageCreateFromPNG';
if(function_exists('ImageCreateFromJPEG'))$gd_allow_types['image/jpeg']='ImageCreateFromJPEG';
//获取文件信息
$fileinfo=getImageSize($file);
$wminfo=getImageSize($this->watermark_file);
if($fileinfo[0]<$wminfo[0]||$fileinfo[1]<$wminfo[1])return;
if(array_key_exists($fileinfo['mime'],$gd_allow_types)){
if(array_key_exists($wminfo['mime'],$gd_allow_types)){
//从文件创建图像
$temp=$gd_allow_types[$fileinfo['mime']]($file);
$temp_wm=$gd_allow_types[$wminfo['mime']]($this->watermark_file);
//水印位置
switch($this->watermark_pos){
case1://顶部居左
$dst_x=0;$dst_y=0;break;
case2://顶部居中
$dst_x=($fileinfo[0]-$wminfo[0])/2;$dst_y=0;break;
case3://顶部居右
$dst_x=$fileinfo[0];$dst_y=0;break;
case4://底部居左
$dst_x=0;$dst_y=$fileinfo[1];break;
case5://底部居中
$dst_x=($fileinfo[0]-$wminfo[0])/2;$dst_y=$fileinfo[1];break;
case6://底部居右
$dst_x=$fileinfo[0]-$wminfo[0];$dst_y=$fileinfo[1]-$wminfo[1];break;
default://随机
$dst_x=mt_rand(0,$fileinfo[0]-$wminfo[0]);$dst_y=mt_rand(0,$fileinfo[1]-$wminfo[1]);
}
if(function_exists('ImageAlphaBlending'))ImageAlphaBlending($temp_wm,True);//设定图像的混色模式
if(function_exists('ImageSaveAlpha'))ImageSaveAlpha($temp_wm,True);//保存完整的alpha通道信息
//为图像添加水印
if(function_exists('imageCopyMerge')){
ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1],$this->watermark_trans);
}else{
ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1]);
}
//保存图片
switch($fileinfo['mime']){
case'image/jpeg':
@imageJPEG($temp,$file);
break;
case'image/png':
@imagePNG($temp,$file);
break;
case'image/gif':
@imageGIF($temp,$file);
break;
}
//销毁零时图像
@imageDestroy($temp);
@imageDestroy($temp_wm);
}
}
}
//获取文件扩展名
functionfileext($filename){
returnstrtolower(substr(strrchr($filename,'.'),1,10));
}
}
?>

❽ thinkphp xheditor 图片上传问题

配置一个图片上传的路径 就好了
上传的处理页面配
<scripttype=“text/javascript”src=“__PUBLIC__/xheditor/xheditor-1.1.7-zh-cn.min.js”></script>
<scripttype=“text/javascript”>
$(pageInit);
functionpageInit() {
$(‘#elm2′).xheditor({
tools:‘Img,Fullscreen’,// 调用图片
skin:‘nostyle’,// 皮肤
upBtnText:‘浏览’,// 上传按钮文字
upMultiple:’5′,// 允许一次上传多少个文件
upImgUrl:“__APP__/Ajax/upload?immediate=1″,// 图片文件上传接收URL 发生到Ajax控制器的upload方法
upImgExt:“jpg,jpeg,gif,png”,// 限制图片上传扩展名
shortcuts:{
‘ctrl+enter’:submitForm
}
});
}
functionsubmitForm(){
$(‘#frmDemo’).submit();
}
</script>
<textareaid=“elm2″name=“elm2″rows=“20″cols=“60″></textarea>
上面的的__APP__/Ajax/upload 发送到 ajax控制器的upload方法
class AjaxAction extends Action{public function upload(){// 上传操作}}

❾ thinkphp 多图上传,如何把图片路径保存到数据库

关于上传文件:

推荐使用插件Uploadify!

使用方法:http://www.uploadify.com/documentation/

下载地址:http://www.uploadify.com/download/


关于多图上传:

  1. 在客户端定义一个js变量,用于缓存每次异步上传图片路径;

  2. 最后提交表达数据的时候就把这些路径集合保存到数据库即可!

热点内容
php接口开发实例 发布:2024-07-06 16:22:28 浏览:212
安卓什么耳机效果好性价比 发布:2024-07-06 16:08:43 浏览:263
电脑如何查看配置安装内存是什么 发布:2024-07-06 16:08:32 浏览:409
myeclipse自动编译设置 发布:2024-07-06 16:05:26 浏览:301
无照片访问 发布:2024-07-06 15:44:44 浏览:305
安卓手机怎么设置iphone微信提示音 发布:2024-07-06 15:40:32 浏览:785
桌面存储阵列 发布:2024-07-06 15:40:32 浏览:586
数控编程目标 发布:2024-07-06 15:34:56 浏览:490
pythonswf 发布:2024-07-06 15:33:21 浏览:274
android中的java 发布:2024-07-06 15:27:27 浏览:99