Discuz!上传图片提示“没有合法的文件被上传”

某客户向我们反馈在我们服务器安装的DZ论坛无法上传图片,拿到客户提供的管理员账户以后,发帖测试发现上传图片没任何问题,于是让客户把他上传错误的图片提供给我们,结果出现“没有合法的文件被上传”的提示。

图片体积800多K,在线上传提示的限制是2M,不会由于体积太大导致上传错误,网上搜了一下有一个上传大尺寸图片提示“没有合法的文件被上传” 解决办法分享的帖子,提到图片分辨率过高会导致该错误,于是看了下客户提供的图片尺寸,宽度达到了10000多像素。。。

用PS把图片尺寸缩放10倍以后,再次尝试上传,该问题解决。

解决办法二

解决方法如下:

决办法

source/class/discuz/discuz_upload.php

编辑这个文件,将
由于程序限制了大尺寸(指分辨率)附件图片,提示 “没有合法的文件被上传”
更改方法:sourceclassdiscuzclass_upload.php
找到:

 代码如下:

function get_image_info($target, $allowswf = false) {
                $ext = discuz_upload::fileext($target);
                $isimage = discuz_upload::is_image_ext($ext);
                if(!$isimage && ($ext != 'swf' || !$allowswf)) {
                        return false;
                } elseif(!is_readable($target)) {
                        return false;
                } elseif($imageinfo = @getimagesize($target)) {
                        list($width, $height, $type) = !empty($imageinfo) ? $imageinfo : array('', '', '');
                        $size = $width * $height;
                        if($size > 16777216 || $size < 16 ) {
                                return false;
                        } elseif($ext == 'swf' && $type != 4 && $type != 13) {
                                return false;
                        } elseif($isimage && !in_array($type, array(1,2,3,6,13))) {
                                return false;
                        }
                        return $imageinfo;
                } else {
                        return false;
                }
        }

找到文件:sourceclassdiscuzclass_upload.php

将 if($size > 16777216 || $size < 16 ) 中16777216改大后即可解决问题。

16777216大约为5000*3356。

Error:500的错误

解决办法就是编辑php.ini文件

打开php.ini,首先找到
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
区域,有影响文件上传的以下几个参数:

file_uploads   =   on   ;是否允许通过HTTP上传文件的开关。默认为ON即是开

upload_tmp_dir   ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹

upload_max_filesize   =   8m   ;望文生意,即允许上传文件大小的最大值。默认为2M


;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
区域,还有一项:

post_max_size   =   8m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M

一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。

但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得关心关心下面的参数:

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time   =   600 ;每个PHP页面运行的最大时间值(秒),默认30秒

max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒

memory_limit   =   8m   ;每个PHP页面所吃掉的最大内存,默认8M
memory_limit设置得更大一些,直到图片能顺利上传。

时间: 2024-10-26 19:57:39

Discuz!上传图片提示“没有合法的文件被上传”的相关文章

Discuz上传文件提示 没有合法的文件被上传

Discuz代码中对图片附件的像素做了限定,像素超出后提示 "没有合法的文件被上传".     解决方法:在sourceclassdiscuzclass_upload.php  117行找到(下图所示)     if($size > 16777216 || $size < 16 )   修改为   if($size < 16 )   或将16777216放大(宽*高=像素数)   如果依然上传失败,继续在php.ini下找到memory_limit 放大数值,然后重新

c# .net mvc-MVC4上传图片并显示,点击上传foreach遍历报错,提示未设置对象实例化?

问题描述 MVC4上传图片并显示,点击上传foreach遍历报错,提示未设置对象实例化? 如图所示是我所用到的代码及运行后报错的提示,调试过后发现遍历时var x的值为空,可是却不知道该怎么实例化,请指教!在线等,谢谢谢谢! 解决方案 要看你的代码,是不是控制器没有把模型传过来.

上传图片-ajaxfileupload多文件异步上传 获取不到file

问题描述 ajaxfileupload多文件异步上传 获取不到file 今天用ajaxfileupload 上传图片,网上百度学习了半天 ,实现了一个图片的上传 ,成功了 . 同样的方法,同一个页面另外一个上传按钮却失败了. 跟踪了看 ,值都传到后台取到了: CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest .getFile(imgName); imgName也是和页面的input type=file的id n

表单上传功能实现 ajax文件异步上传

项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一.jQuery官方下载地址:https://jquery.com/download/ 一.表单上传: html客户端部分: <form action="upload.ashx" method="post" enctype="multipart/form-d

Plupload功能强大的多文件批量上传插件

Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度.图像自动缩略和上传分块.可同时上传多个文件,为您的内容管理系统或是类似上传程序提供一个高度可用的上传插件. Plupload功能强大的多文件批量上传插件 Plupload这个JavaScript控件可以让你选择Adobe Flash.Google Gears.HTML5.Microsoft Silverlight.Yahoo BrowserPlus或正常表单Form等多种方法进行文件上传. Plupload还提供其它

关于安卓对视频文件的上传

问题描述 关于安卓对视频文件的上传 在做一个学生上传视频的功能,查找了很多文章依然没什么思路把,有大神推荐一下怎么做吗 服务器是php的.新手初学把.写了一个asynhttp上传图片没问题,可是上传视频就 出现问题了.是使用文件流把文件转为byte数组然后上传吗?对格式是否有要求了?怎么把流重新转换为视频文件可查看呢?

PHP移动互联网开发笔记(5)——文件的上传下载

一.文件的上传 1.客户端设置: (1).在 标签中将enctype和method两个属性指明相应的值. Enctype="multipart/form-data"; Method="POST" (2).form表单中设置一个hidden类型的input框,其中name的值为MAX_FILE_SIZE的隐藏值 2.服务器端设置: (1).$_FILES多维数组:用于存储各种上传文件有关的信息 (2).文件上传与php配置文件的设置,如以下php.ini文件中的一些指

ASP.NET2.0中全面实现文件图片上传下载处理

asp.net|上传|下载 1.最简单的单文件上传(没花头)2.多文件上传3.客户端检查上传文件类型(以上传图片为例)4.服务器端检查上传文件类型(以上传图片为例) 5.服务器端检查上传文件类型(可以检测真正文件名) 6.上传文件文件名唯一性处理(时间戳+SessionID)7.上传图片生成等比例缩略图8.上传图片加水印(文字水印,图片水印,文字+图片水印)9. 1.最简单的单文件上传(没花头) 效果图:说明:这是最基本的文件上传,在asp.net1.x中没有这个FileUpload控件,只有h

用C#实现Web文件的上传

web|上传 在Web编程中,我们常需要把一些本地文件上传到Web服务器上,上传后,用户可以通过浏览器方便地浏览这些文件,应用十分广泛. 那么使用C#如何实现文件上传的功能呢?下面笔者简要介绍一下. 首先,在你的Visual C# web project中增加一个上传用的Web Form,为了要上传文件, 需要在ToolBox中选择HTML类的File Field控件,将此控件加入到Web Form中,然而此时该控件还不是服务端控件,我们需要为它加上如下一段代码:<input id=upload