Yii+upload实现AJAX上传图片的方法

2025-05-29 0 98

本文实例讲述了Yii+upload实现AJAX上传图片的方法。分享给大家供大家参考,具体如下:

控制器代码:

?

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

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68
/**

* get ajax uploaded files.

*/

public function actionGetAjax(){

$model=new Attachment();//加载附件模型

$tmpFile = CUploadedFile::getInstanceByName('image');//读取图像上传域,并使用系统上传组件上传

$Directroy = Yii::app()->params['uploadPath'];//读取上传配置文件,我的配置是/uploads

//创建文件存放路径

$y = date('Y');

$m = date('m');

$d = date('d');

$Directroy = $Directroy."/";

$pathd = $Directroy.$y."/".$m."/".$d."/";

Tool::makedir(dirname(Yii::app()->BasePath).$pathd); //创建文件夹,此处一定要加上dirname(Yii::app()->BasePath)不然可能会出错;

if(is_object($tmpFile) && get_class($tmpFile)==='CUploadedFile'){

$filename = time().rand(0,9);

$ext = $tmpFile->extensionName;//上传文件的扩展名

if($ext=='jpg'||$ext=='gif'||$ext=='png'){

$big = $pathd . $filename . '_600.' . $ext; //310缩略图

$small = $pathd . $filename . '_310.' . $ext; //310缩略图

$thumb = $pathd . $filename . '_100.' . $ext; //100缩略图

$model->zat_thumb = $thumb; //缩略图

}

$uploadfile = $pathd . $filename . '.' . $ext; //保存的路径

$model->zat_url = $pathd . $filename . '.' . $ext; //重新赋值

$model->zat_file_name = $filename . '.' . $ext; //文件名称

$model->zat_title = $tmpFile->name; //文件标题

$model->zat_file_type = $tmpFile->type; //文件类型

$model->zat_file_size = $tmpFile->size; //文件大小

$model->zat_image = 2;

$model->zat_ip = Yii::app()->request->userHostAddress; //上传IP

//print_r($uploadfile);

}

if($model->save()){

$tmpFile->saveAs(dirname(Yii::app()->BasePath).$uploadfile);//保存到服务器

if($ext=='jpg'||$ext=='gif'||$ext=='png'){

$img = Yii::app()->image->load(dirname(Yii::app()->BasePath).$uploadfile); //使用image-Kohana图像处理库扩展

$img->resize(600,600)->quality(85);

$img->save(dirname(Yii::app()->BasePath).$big);//生成600缩略图

$img->resize(310,310)->quality(85);

$img->save(dirname(Yii::app()->BasePath).$small);//生成310缩略图

$img->resize(100,100)->quality(85);

$img->save(dirname(Yii::app()->BasePath).$thumb);//生成100缩略图

}

if($ext=='jpg'||$ext=='gif'||$ext=='png'){

$str = json_encode(

array(

'upfile'=>array(

'zat_id' => Yii::app()->db->getLastInsertID(), //取插ID

'file' => $uploadfile,//原图

'small' => $small,//310缩略图

'thumb' => $thumb,//100缩略图

)

)

);

}else{

$str = json_encode(

array(

'upfile'=>array(

'zat_id' => Yii::app()->db->getLastInsertID(),

'file' => $uploadfile,

)

)

);

}

echo $str;

}

}

VIEW代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
<input id="fileupload" type="file" name="image" multiple>

<script src="<?php echo Yii::app()->baseUrl;?>/js/jquery.ui.widget.js"></script>

<script src="<?php echo Yii::app()->baseUrl;?>/js/jquery.iframe-transport.js"></script>

<script src="<?php echo Yii::app()->baseUrl;?>/js/jquery.fileupload.js"></script>

<script>

$(function () {

$('#fileupload').fileupload({

dataType: 'json',

url: '/Attachment/GetAjax',

success: function (json) {

$('#MemType_zmt_pic').attr('value',json.upfile.file);

$("#images").attr('src',json.upfile.file);

}

});

});

</script>

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Yii+upload实现AJAX上传图片的方法 https://www.kuaiidc.com/97747.html

相关文章

发表评论
暂无评论