yii2yii2 上传图片文件时,提示文件过大,无法yii2 上传图片,修改maxsize没有效果,求解

Struts2 上传文件过大问题_百度知道
Struts2 上传文件过大问题
是不是Struts2 默认的过滤器限制了Struts2 上传文件过大问题Struts2 上传文件时,文件也能正常上传,但文件过大时(应该超过2M时)就上传不了,我应该如何上传大文件,我没有限制文件的大小
FileUploadInterceptor你可以在defaultstruts2文件上传有个默认的拦截器叫做fileUpload.multipart.默认即2097152.maxSize项为你想要的大小.properties文件中配置1024&#47.struts2.apache,对应的拦截器类名称为1024).interceptor,即2M(
其他类似问题
为您推荐:
其他1条回答
好 楼主,那里的人通常比较多。很幸运的看到你的问题。也可能你现在已经在别的地方找到了答案。希望我的回答也能够帮到你!祝你好运,那就得恭喜你啦。建议你去问题的相关论坛去求助,没人会。可能是你问的问题有些专业了,可能能快点帮你解决问题。或者别人没有遇到或者接触过你的问题,所以帮不了你,也比较热心。但是又很遗憾到现在还没有人回答你的问题
struts2的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁yii使用activeFileField控件实现上传文件与图片的方法
作者:yuhui_fish
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了yii使用activeFileField控件实现上传文件与图片的方法,较为详细的分析了activeFileField控件用于文件传输的具体使用技巧,需要的朋友可以参考下
本文实例讲述了yii使用activeFileField控件实现上传文件与图片的方法。分享给大家供大家参考,具体如下:
yii框架提供了activeFileField控件来完成上传文件(当然也包括了上传图片)的操作,下面介绍yii的activeFileField使用方法。
1、函数原型:
代码如下:public static string activeFileField(CModel $model, string $attribute, array $htmlOptions=array ( ))
2、调用例子:
(1)首先,设置form,这一步一 定要做,把form设置为'multipart/form-data',具体请看我的:
&?php $form=$this-&beginWidget('CActiveForm', array(
'id'=&'books-form',
'enableAjaxValidation'=&false,
'htmlOptions'=&array('enctype'=&'multipart/form-data'),
(2) 接着,在view下的form里设置:
&div class="row"&
&?php echo $form-&labelEx($model,'BookImg'); ?&
&?php echo CHtml::activeFileField($model,'BookImg'); ?&
&?php echo $form-&error($model,'BookImg'); ?&
(3) 如果你想预览图片,那么请注意了,可以加上这么一段:
&div class="row"&
&?php echo '图片预览' ?&
&?php echo '&img src="/'.$model-&BookImg.'" style="width:200height:300"/&'; ?&
(4)最后,需要在控制类里加上下面的:
if($model-&save())
$image=CUploadedFile::getInstance($model,'BookImg');
if (is_object($image) && get_class($image)==='CUploadedFile')
$image-&saveAs("D:/aaa/aa.jpg");//路径必须真实存在,并且如果是linux系统,必须有修改权限
$this-&redirect(array('view','id'=&$model-&BookId));
请注意:这里是添加的时候使用的,修改的话要有所改变。
(5)限制上传的文件必须是图片,还有限制图片大小,那么请到model层里的rules新增这么一句:
array('BookImg', 'file','allowEmpty'=&true,
'types'=&'jpg, gif, png',
'maxSize'=&1024 * 1024 * 1, // 1MB
'tooLarge'=&'The file was larger than 1MB. Please upload a smaller file.',
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具现在位置:
(window.slotbydup=window.slotbydup || []).push({
id: '2445885',
container: s,
size: '1000,90',
display: 'inlay-fix'
yii使用activeFileField控件实现上传文件与图片的方法,
本文实例讲述了yii使用activeFileField控件实现上传文件与图片的方法。分享给大家供大家参考,具体如下:
yii框架提供了activeFileField控件来完成上传文件(当然也包括了上传图片)的操作,下面介绍yii的activeFileField使用方法。
1、函数原型:
复制代码 代码如下:public static string activeFileField(CModel $model, string $attribute, array $htmlOptions=array ( ))
2、调用例子:
(1)首先,设置form,这一步一 定要做,把form设置为'multipart/form-data',具体请看我的:
&?php $form=$this-&beginWidget('CActiveForm', array(
'id'=&'books-form',
'enableAjaxValidation'=&false,
'htmlOptions'=&array('enctype'=&'multipart/form-data'),
(2) 接着,在view下的form里设置:
&div class="row"&
&?php echo $form-&labelEx($model,'BookImg'); ?&
&?php echo CHtml::activeFileField($model,'BookImg'); ?&
&?php echo $form-&error($model,'BookImg'); ?&
(3) 如果你想预览图片,那么请注意了,可以加上这么一段:
&div class="row"&
&?php echo '图片预览' ?&
&?php echo '&img src="/'.$model-&BookImg.'" style="width:200height:300"/&'; ?&
(4)最后,需要在控制类里加上下面的:
if($model-&save())
$image=CUploadedFile::getInstance($model,'BookImg');
if (is_object($image) && get_class($image)==='CUploadedFile')
$image-&saveAs("D:/aaa/aa.jpg");//路径必须真实存在,并且如果是linux系统,必须有修改权限
$this-&redirect(array('view','id'=&$model-&BookId));
请注意:这里是添加的时候使用的,修改的话要有所改变。
(5)限制上传的文件必须是图片,还有限制图片大小,那么请到model层里的rules新增这么一句:
array('BookImg', 'file','allowEmpty'=&true,
'types'=&'jpg, gif, png',
'maxSize'=&1024 * 1024 * 1, // 1MB
'tooLarge'=&'The file was larger than 1MB. Please upload a smaller file.',
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
您可能感兴趣的文章:
Yii框架登录流程分析
Yii中CGridView实现批量删除的方法
Yii基于数组和对象的Model查询技巧实例详解
yii权限控制的方法(三种方法)
yii实现使用CUploadedFile上传文件的方法
Yii中Model(模型)的创建及使用方法
yii数据库的查询方法
Yii中实现处理前后台登录的新方法Yii的上传问题及解决 - anjo - 博客园
posts - 44, comments - 16, trackbacks - 0, articles - 0
这些天在学习YiiFramework,感觉很对自己胃口,加上原来学过rails,所以理解Yii的许多概念很容易。
期间遇到一个问题,就是上传文件字段的问题。
有个表TblDocument,其中有一个字段为real_filename,保存用户上传后的文件在服务器实际保存的文件名。
看资料可知,Yii中有一个CUploadedFile可以直接用。按照官网上的Wiki文章,慢慢搞定了上传和保存。过程如下:
1、在Model文件中的rules()段里增加一行
&&& &&& &&& array('real_filename', 'file', 'types'=&'jpg', 'maxSize'=&307200, 'allowEmpty'=&TRUE),
2、在model引用到的_form.php里,相关引用改为:
&&& &div class="row"&&&& &&& &?php echo $form-&labelEx($model,'real_filename'); ?&&&& &&& &?php echo $form-&fileField($model,'real_filename',array('size'=&60,'maxlength'=&255)); ?&&&& &&& &?php echo $form-&error($model,'real_filename'); ?&&&& &/div&(gii生成的是textfield)
3、在controller中这样写
&&& public function actionUpdate($id)&&& {&&& &&& $folder='/upload/';&&& &&& $root=YiiBase::getPathOfAlias('webroot');&&& &&& $model=$this-&loadModel($id);&&& &&& $old_real_filename=$model-&real_&&& &&& // Uncomment the following line if AJAX validation is needed&&& &&& // $this-&performAjaxValidation($model);&&& &&& if(isset($_POST['TblDocument']))&&& &&& {&&& &&& &&& $model-&attributes=$_POST['TblDocument'];&&&&&&& &&& $real_filename = CUploadedFile::getInstance($model, 'real_filename');&&& &&& &&& $newName=date('Ymd-His-').rand().'.'.$real_filename-&extensionN&&& &&& &&& if (is_object($real_filename)) {&&& &&& &&& &&& $real_filename-&saveAs($root.$folder.$newName);&&& &&& &&& &&& $model-&real_filename=$newN&&& &&& &&& }&&& &&& &&& &&& &&& &&& $model-&save();&&& &&& &&& $this-&redirect(array('view', 'id'=&$model-&id));&&& &&& }&&& &&& $this-&render('update',array(&&& &&& &&& 'model'=&$model,&&& &&& ));&&& }
这样,文件上传后,会正确地放入指定文件夹中,名字也生成正确,没有问题。
不过在进入记录修改时,遇到了一个困扰几天的问题:修改这个表的一条记录,当只是修改那些非文件上传字段时,始终改不过来。试着把controller的$model-&save()后面的redirect转向去掉,这样,save后会继续回到update的视图,我看到有一行错误信息:大意是real_filename不可以为空。这样就明白了,原来,在save之前,有一个内置的合法性验证,Yii发现有错误,就制止了save,所以记录就没有被修改。
观察update时的html源码,发现Yii在处理上传文件字段时,用了这样的代码:
& class="row"&
& for="TblDocument_real_filename"&原始文件名&/&
& id="ytTblDocument_real_filename" type="hidden" value="" name="TblDocument[real_filename]" /&
& size="60" maxlength="255" name="TblDocument[real_filename]" id="TblDocument_real_filename" type="file" /&&/&
看到里面有一个hidden字段,name和file field相同,都是TblDocument[real_filename]。能不能在显示form时,先悄悄将它赋好值,这样提交时,岂不是就解决了real_filename不能为空的错误?
说干就干,我还用上了jquery,在网页中动态修改了它的值。(因为这个hidden字段是yii自动生成的,我假装一开始不知道它的名字,这就是为什么要用jquery的原因--主要是通过jquery的选择器,可以容易地定位和修改它)。
好了,那个亲爱的hidden字段现在成功加载了本条记录的原始real_filename的值,提交时经过wexpert监测,也真的有提交,可是可是,还是出现同样的错误。。。
我试着在model的rules里删除那行对file字段的定义,错误提示神奇的消失了。
现在症结已经很清楚了,就是字段定义方面的问题。继续查文档,看到有一个allowEmpty属性。就是专门管这事儿的。最后,我把那一行改为
&&& array('real_filename', 'file', 'types'=&'jpg', 'maxSize'=&307200, 'allowEmpty'=&TRUE),
大功告成,亲个嘴儿吧~
========================
总结,这个问题开始卡壳,是因为对Yii的处理机制、调试方法、各种调用都不熟悉的原因,在查找原因的过程中,也算是多方都有小的收获,最后问题解决。可惜的是耽误了好几天时间。

我要回帖

更多关于 yii2 图片上传预览 的文章

 

随机推荐