thinkphp开发图片上传,图片异步上传是目前比较方便的功能,这里我就不写css文件了,将代码写出来。引入核心文件下载https://github.com/carlcarl/A...
HTML
下面首先在html页面引入相关js资源
1
2
3
4
5
6
7
8
9
10
11
|
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< title >图片上传</ title >
< script type = "text/javascript" src = "js/jquery-1.8.2.min.js" ></ script >
</ head >
< body >
</ body >
</ html >
|
接下来在body中创建相关div
1
2
3
4
5
6
7
8
9
10
11
12
|
< label class = "title w100" >封面图片:</ label >
< div class = "f_l" >
< label class = "fileupload" onclick = "upd_file(this,'image_file');" >
< input type = "file" class = "filebox" name = "image_file" id = "image_file" />
<!--上传成功后图片会给value赋值图片路径,以便于form表单提交数据-->
< input type = "hidden" name = "image" value = "" >
</ label >
< label class = "fileuploading hide" ></ label >
</ div >
< div class = "blank15" ></ div >
<!--上传成功后图片会在这里显示否则是默认图片-->
< img id = "image" src = "/Public/images/empty_thumb.gif" />
|
解释一下:
其中upd_file(this,'image_file')不可缺少
其中隐藏的input 是用于上传成功后赋值图片路径,以便于form表单提交数据
接下来在html中编辑javascript脚本以便于传递和提交图片功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
<script>
function upd_file(obj,file_id){
$( "input[name='" +file_id+ "']" ).bind( "change" , function (){
$(obj).hide();
$(obj).parent().find( ".fileuploading" ).removeClass( "hide" );
$(obj).parent().find( ".fileuploading" ).removeClass( "show" );
$(obj).parent().find( ".fileuploading" ).addClass( "show" );
$.ajaxFileUpload
(
{
url: '/index.php/home/avatar/app_upload_image' , //上传图片处理文件
secureuri: false ,
fileElementId:file_id,
dataType: 'json' ,
success: function (data, status)
{
$(obj).show();
$(obj).parent().find( ".fileuploading" ).removeClass( "hide" );
$(obj).parent().find( ".fileuploading" ).removeClass( "show" );
$(obj).parent().find( ".fileuploading" ).addClass( "hide" );
if (data.status==1)
{
$( "#image" ).attr( "src" ,data.thumb_url+ "?r=" +Math.random());
$( "input[name='image']" ).val(data.url); //返回json后将隐藏input赋值
//$("#img_url").html('<input type="hidden" name="img_url" value="'+ path.path +'" />');
}
else
{
$.showErr(data.msg);
}
},
error: function (data, status, e)
{
$.showErr(data.responseText);;
$(obj).show();
$(obj).parent().find( ".fileuploading" ).removeClass( "hide" );
$(obj).parent().find( ".fileuploading" ).removeClass( "show" );
$(obj).parent().find( ".fileuploading" ).addClass( "hide" );
}
}
);
$( "input[name='" +file_id+ "']" ).unbind( "change" );
});
}
<script>
|
thikphp 中创建方法 app_upload_image()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
function app_upload_image( $maxSize =52428800){
$id =session( 'id' );
$config = array (
'rootPath' => 'Upload' , //文件上传保存的根路径
'savePath' => '/avatar/' ,
'exts' => array ( 'jpg' , 'gif' , 'png' , 'jpeg' , 'bmp' ),
'maxSize' => $maxSize ,
'autoSub' => true,
);
$upload = new \Think\Upload( $config ); // 实例化上传类
$z = $upload ->uploadOne( $_FILES [ 'image_file' ]);
if ( $z ) {
//拼接图片的路径名
$img = '/Upload' . $z [ 'savepath' ]. $z [ 'savename' ];
$_POST [ 'image_file' ]= $img ;
//获取上传图片绝对路径
$imgsrc = $_SERVER [ 'DOCUMENT_ROOT' ].__ROOT__. $_POST [ 'image_file' ];
$image = new \Think\Image();
$image ->open( $imgsrc );
//将图片裁剪为400x400并保存为corp.jpg
$image ->thumb(205, 160,\Think\Image::IMAGE_THUMB_CENTER)->save( $imgsrc );
$this ->ajaxReturn( array ( "thumb_url" => $img , "url" => $img , "status" =>1));
}
}
|
OK这样就好了,首先和大家说一下,如果ajaxfileupload.js报错程序是不会跑通的,如果你的程序报错就检查你的ajaxfileupload文件是不是版本的问题
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://segmentfault.com/a/1190000010872972