导航:首页 > 文件教程 > apache允许上传文件

apache允许上传文件

发布时间:2023-01-24 14:45:41

Ⅰ 如何设置apache+php的上传文件大小上限

完整修改步骤:
1.修改Apache设置
在httpd.conf 加一句(随便加哪都行) LimitRequestBody 10240000(这个数字多大都可以,我设的上限是10M)
2.修改PHP设置
相关的设置有如下几个,但是我只改了其中的post_max_size

(下面的内容是直接粘第一篇文章里的)
打开php.ini, Ctrl+F 找到下面的项并修改之。下面以上传100M为例。
file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize = 100m ;望文生意,即允许上传文件大小的最大值。默认为2M
post_max_size = 100M ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得关心关心下面的参数:
max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit = 128M ;每个PHP页面所吃掉的最大内存,默认8M
希望可以采纳,谢谢。

Ⅱ 修改 apache 上传文件大小限制

修改 apache 上传文件大小限制
2013-06-06 14:58:11| 分类: apache |举报|字号 订阅
第一步: Apache环境中的档案上传大小控制
修改位于Apahce目录下的httpd.conf
添加下面内容
LimitRequestBody 10485760
即10M=10 1024 1024,有的文章中提到应改为 600000000
重新启动apache,就可以在设置里看到你要的大小

Windows 环境下的修改方法 ================================================================
第二步:修改在php5下POST文件大小的限制
1.编修php.ini
找到:max_execution_time = 30 ,这个是每个脚本运行的最长时间,单位秒,修改为:
max_execution_time = 150
找到:max_input_time = 60,这是每个脚本可以消耗的时间,单位也是秒,修改为:
max_input_time = 300
找到:memory_limit = 128M,这个是脚本运行最大消耗的内存,根据你的需求更改数值,这里修改为:
memory_limit = 256M
找到:post_max_size = 8M,表单提交最大数据为 8M,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的。限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等…这里修改为:
post_max_size = 20M
找到:upload_max_filesize = 2M ,上载文件的最大许可大小 ,修改为:
upload_max_filesize = 10M
Linux 环境下的修改方法 ================================================================
修改etc/php.ini
找到 File Uploadsh区域修改以下几个参数: file_uploads = on ;是否允许通过HTTP上传文件的开关。
默认为ON即是开 upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹(moodle可以不改)
upload_max_filesize = 8m ;允许上传文件大小的最大值.
找到 Data Handling区域,修改 post_max_size = 8m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。
默认为8M
设上述四个参数后,上传小于8M的文件一般不成问题。但如果上传大于8M的文件,只还得设置以下参数:
在Resource Limits 区域: max_execution_time = 600 ;
每个PHP页面运行的最大时间值(秒),默认30秒 max_input_time = 600 ;
每个PHP页面接收数据所需的最大时间,默认60秒 memory_limit = 8m ;
每个PHP页面所吃掉的最大内存,默认8M

Ⅲ 怎么用Apache搭建一个服务器供查看文件或者上传文件

Apache 相当于windows 中的IIS , 我个人认为你要想实现你的功能还想用Apache实现必须通过编程手段来完成。如果不用Apache,你可以选FTP服务器来完成或者相关的FTP软件。

Ⅳ Apache FileUpload文件上传组件API解析

java Web开发人员可以使用Apache文件上传组件来接收浏览器上传的文件 该组件由多个类共同组成 但是 对于使用该组件来编写文件上传功能的Java Web开发人员来说 只需要了解和使用其中的三个类 DiskFileUpload FileItem和FileUploadException 这三个类全部位于mons fileupload包中

DiskFileUpload类

DiskFileUpload类是Apache文件上传组件的核心类 应用程序开发人员通过这个类来与Apache文件上传组件进行交互 但现在Apache建议使用ServletFileUpload类 两个类的方法类似 下面介绍DiskFileUpload类中的几个常用的重要方法

.setSizeMax方法

setSizeMax方法用于设置请求消息实体内容的最大允许大小 以防止客户端故意通过上传特大的文件来塞满服务器端的存储空间 单位为字节 其完整语法定义如下

public void setSizeMax(long sizeMax)

如果请求消息中的实体内容的大小超过了setSizeMax方法的设置值 该方法将会抛出FileUploadException异常

.setSizeThreshold方法

Apache文件上传组件在解析和处理上传数据中的每个字段内容时 需要临时保存解析出的数据 因为Java虚拟机默认可以使用的内存空间是有限的(笔者测试不大于 M) 超出限制时将会发生 java lang OutOfMemoryError 错误 如果上传的文件很大 例如上传 M的文件 在内存中将无法保存该文件内容 Apache文件上传组件将用临时文件来保存这些数据 但如果上传的文件很小 例如上传 个字节的文件 显然将其直接保存在内存中更加有效 setSizeThreshold方法用于设置是否使用临时文件保存解析出的数据的那个临界值 该方法传入的参数的单位是字节 其完整语法定义如下

public void setSizeThreshold(int sizeThreshold)

setRepositoryPath方法

setRepositoryPath方法用于设置setSizeThreshold方法中提到的临时文件的存放目录 这里要求使用绝对路径 其完整语法定义如下

public void setRepositoryPath(String repositoryPath)

如果不设置存放路径 那么临时文件将被储存在 java io tmpdir 这个JVM环境属性所指定的目录中 tomcat 将这个属性设置为了 <tomcat安装目录>/temp/ 目录

parseRequest方法

parseRequest 方法是DiskFileUpload类的重要方法 它是对HTTP请求消息进行解析的入口方法 如果请求消息中的实体内容的类型不是 multipart/form data 该方法将抛出FileUploadException异常 parseRequest 方法解析出FORM表单中的每个字段的数据 并将它们分别包装成独立的FileItem对象 然后将这些FileItem对象加入进一个List类型的集合对象中返回 parseRequest 方法的完整语法定义如下

public List parseRequest(HttpServletRequest req)

parseRequest 方法还有一个重载方法 该方法集中处理上述所有方法的功能 其完整语法定义如下

parseRequest(HttpServletRequest req int sizeThreshold long sizeMax

String path)

这两个parseRequest方法都会抛出FileUploadException异常

isMultipartContent方法

isMultipartContent方法方法用于判断请求消息中的内容是否是 multipart/form data 类型 是则返回true 否则返回false isMultipartContent方法是一个静态方法 不用创建DiskFileUpload类的实例对象即可被调用 其完整语法定义如下

public static final boolean isMultipartContent(HttpServletRequest req)

setHeaderEncoding方法

由于浏览器在提交FORM表单时 会将普通表单中填写的文本内容传递给服务器 对于文件上传字段 除了传递原始的文件内容外 还要传递其文件路径名等信息 如后面的图 所示 不管FORM表单采用的是 application/x form urlencoded 编码 还是 multipart/form data 编码 它们仅仅是将各个FORM表单字段元素内容组织到一起的一种格式 而这些内容又是由某种字符集编码来表示的 关于浏览器采用何种字符集来编码FORM表单字段中的内容 请参看笔者编著的《深入体验java Web开发内幕——核心基础》一书中的第 的讲解 multipart/form data 类型的表单为表单字段内容选择字符集编码的原理和方式与 application/x form urlencoded 类型的表单是相同的 FORM表单中填写的文本内容和文件上传字段中的文件路径名在内存中就是它们的某种字符集编码的字节数组形式 Apache文件上传组件在读取这些内容时 必须知道它们所采用的字符集编码 才能将它们转换成正确的字符文本返回

对于浏览器上传给WEB服务器的各个表单字段的描述头内容 Apache文件上传组件都需要将它们转换成字符串形式返回 setHeaderEncoding 方法用于设置转换时所使用的字符集编码 其原理与笔者编著的《深入体验java Web开发内幕——核心基础》一书中的第 节讲解的ServletRequest setCharacterEncoding方法相同 setHeaderEncoding 方法的完整语法定义如下

public void setHeaderEncoding(String encoding)

其中 encoding参数用于指定将各个表单字段的描述头内容转换成字符串时所使用的字符集编码

注意 如果读者在使用Apache文件上传组件时遇到了中文字符的乱码问题 一般都是没有正确调用setHeaderEncoding方法的原因

FileItem类

FileItem类用来封装单个表单字段元素的数据 一个表单字段元素对应一个FileItem对象 通过调用FileItem对象的方法可以获得相关表单字段元素的数据 FileItem是一个接口 在应用程序中使用的实际上是该接口一个实现类 该实现类的名称并不重要 程序可以采用FileItem接口类型来对它进行引用和访问 为了便于讲解 这里将FileItem实现类称之为FileItem类 FileItem类还实现了Serializable接口 以支持序列化操作

对于 multipart/form data 类型的FORM表单 浏览器上传的实体内容中的每个表单字段元素的数据之间用字段分隔界线进行分割 两个分隔界线间的内容称为一个分区 每个分区中的内容可以被看作两部分 一部分是对表单字段元素进行描述的描述头 另外一部是表单字段元素的主体内容 如图 所示

主体部分有两种可能性 要么是用户填写的表单内容 要么是文件内容 FileItem类对象实际上就是对图 中的一个分区的数据进行封装的对象 它内部用了两个成员变量来分别存储描述头和主体内容 其中保存主体内容的变量是一个输出流类型的对象 当主体内容的大小小于DiskFileUpload setSizeThreshold方法设置的临界值大小时 这个流对象关联到一片内存 主体内容将会被保存在内存中 当主体内容的数据超过DiskFileUpload setSizeThreshold方法设置的临界值大小时 这个流对象关联到硬盘上的一个临时文件 主体内容将被保存到该临时文件中 临时文件的存储目录由DiskFileUpload setRepositoryPath方法设置 临时文件名的格式为 upload_ (八位或八位以上的数字) tmp 这种形式 FileItem类内部提供了维护临时文件名中的数值不重复的机制 以保证了临时文件名的唯一性 当应用程序将主体内容保存到一个指定的文件中时 或者在FileItem对象被垃圾回收器回收时 或者Java虚拟机结束时 Apache文件上传组件都会尝试删除临时文件 以尽量保证临时文件能被及时清除

下面介绍FileItem类中的几个常用的方法

isFormField方法

isFormField方法用于判断FileItem类对象封装的数据是否属于一个普通表单字段 还是属于一个文件表单字段 如果是普通表单字段则返回true 否则返回false 该方法的完整语法定义如下

public boolean isFormField()

getName方法

getName方法用于获得文件上传字段中的文件名 对于图 中的第三个分区所示的描述头 getName方法返回的结果为字符串 C:g gif 如果FileItem类对象对应的是普通表单字段 getName方法将返回null 即使用户没有通过网页表单中的文件字段传递任何文件 但只要设置了文件表单字段的name属性 浏览器也会将文件字段的信息传递给服务器 只是文件名和文件内容部分都为空 但这个表单字段仍然对应一个FileItem对象 此时 getName方法返回结果为空字符串 读者在调用Apache文件上传组件时要注意考虑这个情况 getName方法的完整语法定义如下

public String getName()

注意 如果用户使用Windows系统上传文件 浏览器将传递该文件的完整路径 如果用户使用Linux或者Unix系统上传文件 浏览器将只传递该文件的名称部分

.getFieldName方法

getFieldName方法用于返回表单字段元素的name属性值 也就是返回图 中的各个描述头部分中的name属性值 例如 name=p 中的 p getFieldName方法的完整语法定义如下

public String getFieldName()

write方法

write方法用于将FileItem对象中保存的主体内容保存到某个指定的文件中 如果FileItem对象中的主体内容是保存在某个临时文件中 该方法顺利完成后 临时文件有可能会被清除 该方法也可将普通表单字段内容写入到一个文件中 但它主要用途是将上传的文件内容保存在本地文件系统中 其完整语法定义如下

public void write(File file)

.getString方法

getString方法用于将FileItem对象中保存的主体内容作为一个字符串返回 它有两个重载的定义形式

public java lang String getString()

public java lang String getString(java lang String encoding)

throws java io UnsupportedEncodingException

前者使用缺省的字符集编码将主体内容转换成字符串 后者使用参数指定的字符集编码将主体内容转换成字符串 如果在读取普通表单字段元素的内容时出现了中文乱码现象 请调用第二个getString方法 并为之传递正确的字符集编码名称

getContentType方法

getContentType 方法用于获得上传文件的类型 对于图 中的第三个分区所示的描述头 getContentType方法返回的结果为字符串 image/gif 即 Content Type 字段的值部分 如果FileItem类对象对应的是普通表单字段 该方法将返回null getContentType 方法的完整语法定义如下

public String getContentType()

isInMemory方法

isInMemory方法用来判断FileItem类对象封装的主体内容是存储在内存中 还是存储在临时文件中 如果存储在内存中则返回true 否则返回false 其完整语法定义如下

public boolean isInMemory()

delete方法

delete方法用来清空FileItem类对象中存放的主体内容 如果主体内容被保存在临时文件中 delete方法将删除该临时文件 尽管Apache组件使用了多种方式来尽量及时清理临时文件 但系统出现异常时 仍有可能造成有的临时文件被永久保存在了硬盘中 在有些情况下 可以调用这个方法来及时删除临时文件 其完整语法定义如下

public void delete()

FileUploadException类

在文件上传过程中 可能发生各种各样的异常 例如网络中断 数据丢失等等 为了对不同异常进行合适的处理 Apache文件上传组件还开发了四个异常类 其中FileUploadException是其他异常类的父类 其他几个类只是被间接调用的底层类 对于Apache组件调用人员来说 只需对FileUploadException异常类进行捕获和处理即可

ServletRequestContext

lishixin/Article/program/Java/hx/201311/26285

Ⅳ apache httpd 支持文件上传么

1、第一步安装php相关环境,包括php cli,workerman运行在php cli下,如果已经安装好环境则不用安装;php-process(一般centos系统下需要安装)为进程控制相关扩展,包括posix和pcntl;git是一款免费、开源的分布式版本控制系统,用于下载或者更新workerman源代码(如果手动下载zip文件则可以不用安装git,并跳过安装步骤中的第4步);gcc、php-devel、php-pear、libevent-devel用于安装php的libevent扩展,如果不想安装libevent则可以省略并跳过安装步骤中的第2和第3步;
2、第二步和第三步通过pecl安装libevent扩展,并配置扩展的ini文件(安装libevent扩展不是必须的,libevent扩展可以让php使用更高级的事件库,在并发量很高时发挥作用,如果并发量比较低,例如5000并发,可以不用安装)
3、第四步是通过git下载workerman的应用程序,这里默认下载的是workerman的Demo程序,如果下载workerman的其他应用程序可以修改地址,例如下载workerman-chat则命令为git clone https://github.com/walkor/workerman-chat。如果手动下载过了想要的workerman应用程序,则此步骤可以省略。

Ⅵ 怎么用Apache搭建一个可以文件上传下载的web网站

很简单如果你有域名就绑定没有直接使用IP进行访问安装php环境就可以了帮助直接访问文件名字就可以下载的

Ⅶ 请问用apache+php开发的系统上最大能上传多大的文件 - PHP进阶讨论

但是如果你真的这样做,web server会死掉的.通过http方式上传1G的文件,这种思路有问题。如果一定要这样做,建议用activex插件,但是firefox等非ie浏览器不支持。还有一个办法,用cgi(perl,python写脚本)可以实现。

Ⅷ apache ftp可以上传大文件吗

vi /etc/php.ini

upload_max_filesize = 2M
post_max_size = 8M
max_execution_time = 30
max_input_time = 60

调整下这几个数值再重启下Apache看下

Ⅸ 使用apache的fileupload组件上传文件怎么解决编码问题

你在保存文件的时候有个参数设置这个文件的编码啊

Ⅹ 文件上传漏洞

在上网的过程中,经常会将一些如图片、压缩包之类的文件上传到远端服务器进行保存。文件上传攻击指的是恶意攻击者利用一些站点没有对文件的类型做很好的校验,上传了可执行的文件或者脚本,并且通过脚本获得服务器上相应的权利,或者是通过诱导外部用户访问、下载上传的病毒或木马文件,达到攻击的目的。为了防范用户上传恶意的可执行文件和脚本,以及将文件上传服务器当做免费的文件存储服务器使用,我们需要对上传的文件类型进行白名单(非黑名单,这点非常重要)校验,并且限制上传文件的大小,上传的文件需要进行重新命名,使攻击者无法猜测到上传文件的访问路径。
对于上传的文件来说,不能简单地通过后缀名称来判断文件的类型,因为恶意攻击可以将可执行文件的后缀名称改成图片或者其他后缀类型,诱导用户执行。因此,判断文件类型需要使用更安全的方式。很多类型的文件,起始的几个字节内容是固定的,因此,根据这几个字节的内容,就可以确定文件类型,这几个字节也被称为魔数( magic number)。

阅读全文

与apache允许上传文件相关的资料

热点内容
苹果手机有photoshop吗 浏览:120
压缩文件下载后怎么找位置 浏览:664
一汽大众app修改密码在哪里 浏览:153
如何开展数据化分析 浏览:846
宝宝故事动画app 浏览:820
iphone无法访问文档 浏览:772
哪里可以查询上市公司财报数据 浏览:751
加工中心圆周铣孔如何手动编程 浏览:308
诛仙飞升135后怎么升级 浏览:419
2016cad输入要附着的图像文件名 浏览:688
c调用linux 浏览:194
荣耀运动数据如何导入行者 浏览:995
iphone6介绍 浏览:578
aspnet输出json 浏览:431
ward文件怎么用图片覆盖文字 浏览:427
qq头像女生古风伤感图片 浏览:781
买床单去哪个网站 浏览:348
沈阳哪里有网络编程学校 浏览:196
证婚文件夹 浏览:37
一般正常文件格式字体是多少号 浏览:320

友情链接