文件管理 · 2024年10月4日

form表单上传文件大小限制|怎么在js 里面限制上传图片的大小不能超过 1M

❶ 关于asp.net 的几个名词解释,求助。。

1.Request对象作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。Request对象的语法如下:Request[.collectionlpropertylmethod](variable)collection集合clientcertificate 得到在HTTP请求中传递在客户端认证域的值cookies 使用此集合,可得到cookies值form 得到form对象中元素的值querystring 得到变量的值servervariables 得到预置的环境变量的值property属性totalbytes (只读)指定从客户端传递总字节数buffer 表明页面输出是否有缓冲cachecontrol 决定代理服务器是否能够对asp的输出进行快取property属性charset 字符集contenttype 指定response的HTTP内容类型expires 定义一个浏览器缓存中的页面在多长时间后过期expiresabsolute 定义一个浏览器缓存中的页面什么日期时间后过期isclientconnected 用户是否连接到服务器pics 设置pics-label response标题的值,标示pics内容等级status 由服务器返回的状态行说明:1、其中collection表示集合,它和数组很类似,是由若干元素组成的集合。不过数组一般只能用索引(下标)来引用每一个元素,而集合不仅可以用索引来引用每一个元素的值,还可以用元素的名称来引用,如Request.Form("txtA")。事实上,后者是常用的方法。2、variable又称参数,它就是要获取的元素的名称,可以是字符串常量或字符串变量。例如,对表单信息来说,variable就是每一个表单元素的名称。3、“【”和“】”之间的参数可以省略,如Request("txtA")。此时因为没有指定集合,所以ASP将会依次在QueryString、Form、Cookies、ServerVariables、ClientCertificate这5种集合中检查是否有信息传入。如果有信息传入,则会返回获取的信息。4、请注意上面的第二个例子,其中前面的strB是定义的一个变量名称,而后面的strB则是集合中一个元素的名称,两者不是一回事。method方法binaryread 得到从客户端传给服务器端的数据1.Request对象是ASP中常用的对象,用于获取客户端的信息,可以使用Request对象访问任何基于HTTP请求传递的所有信息。通过Request对象能够获得客户端发送给服务器的信息,不能将服务器端的数据发送给客户端的浏览器。Request对象的属性TotalBytes的功能是取得客户端响应数据字节大小。Request对象的方法BinaryRead的功能是以二进制方式读取客户端post的数据。 request对象有五个集合,下面予以介绍:QueryString:用以获取客户端附在url地址后的查询字符串中的信息。 例如:stra=Request.QueryString ["strUserld"]Form:用以获取客户端在FORM表单中所输入的信息。(表单的method属性值需要为POST) 例如:stra=Request.Form["strUserld"]Cookies:用以获取客户端的Cookie信息。 例如:stra=Request.Cookies["strUserld"]ServerVariables:用以获取客户端发出的HTTP请求信息中的头信息及服务器端环境变量信息。 例如:stra=Request.ServerVariables["REMOTE_ADDR"],返回客户端IP地址ClientCertificate:用以获取客户端的身份验证信息 例如:stra=Request.ClientCertificate["VALIDFORM"],对于要求安全验证的网站,返回有效起始日期。2session对象用于存储特定的用户会话所需的信息 。 Session对象的引入是为了弥补HTTP协议的不足,HTTP协议是一种无状态的协议。 Session中文是“会话”的意思,在ASP中代表了服务器与客户端之间的“会话”。Session的作用时间从用户到达某个特定的Web页开始,到该用户离开Web站点,或在程序中利用代码终止某个Session结束。引用Session 则可以让一个用户访问多个页面之间的切换也会保留该用户的信息。 系统为每个访问者都设立一个独立的Session对象,用以存储Session变量,并且各个访问者的Session对象互不干扰。 Session与Cookie是紧密相关的。 Session的使用要求用户浏览器必须支持Cookie,如果浏览器不支持使用Cookie,或者设置为禁用Cookie,那么将不能使用Session。 Session信息对客户来说,不同的用户用不同的Session信息来记录。当用户启用Session时,ASP自动产生一个SessionID.在新会话开始时,服务器将SessionID当做cookie存储在用户的浏览器中。session语法:session.集合∣属性∣方法举例:<html><head><title>学好session加油</title></head><body><%session("greeting")="ASP“Response.write(session("greeting"))%></body></html>Session对象的集合、属性、方法、事件名称 描述 Contents集合 包含所有通过脚本命令添加到应用程序中的数据项 SessionID属性 用来标识每一个Session对象 TimeOut属性 用来设置Session会话的超时时间(以分钟表示) Abandon方法 强行删除当前会话的Session对象,释放系统资源 Session_OnStart事件 建立Session对象时所激发的事件 Session_OnEnd事件 结束Session对象时所激发的事件 StaticObjects集合 包含所有通过<OBJECT>标记添加到应用程序中的对象 3CompareValidator 控件用于将由用户输入到输入控件的值与输入到其他输入控件的值或常数值进行比较。注释:如果输入控件为空,则不会调用任何验证函数,并且验证将成功。使用 RequiredFieldValidator 控件使字段成为必选字段。属性属性 描述 BackColor CompareValidator 控件的背景颜色。 ControlToCompare 要与所验证的输入控件进行比较的输入控件。 ControlToValidate 要验证的输入控件的 ID。 Display 验证控件中错误信息的显示行为。合法值是: None 验证消息从不内联显示。Static 在页面布局中分配用于显示验证消息的空间。Dynamic 如果验证失败,将用于显示验证消息的空间动态添加到页面。 EnableClientScript 布尔值,规定是否启用客户端验证。 Enabled 布尔值,规定是否启用验证控件。 ErrorMessage 当验证失败时在 ValidationSummary 控件中显示的文本。注释:如果未设置 Text 属性,此文本将显示在验证控件中。 ForeColor 控件的前景颜色。 id 控件的唯一 ID。 IsValid 布尔值,指示由 ControlToValidate 指定的输入控件是否通过验证。 Operator 要执行的比较操作的类型。运算符是:EqualGreaterThanGreaterThanEqualLessThanLessThanEqualNotEqualDataTypeCheck runat 规定控件是服务器控件。必须设置为 "server"。 Text 当验证失败时显示的消息。 Type 规定要对比的值的数据类型。类型有:CurrencyDateDoubleIntegerString ValueToCompare 一个常数值,该值要与由用户输入到所验证的输入控件中的值进行比较。 实例CompareValidator在此例中,我们在 .aspx 文件中声明了两个 TextBox 控件,一个 Button 控件,以及一个 CompareValidator 控件。如果验证失败,将在 CompareValidator 控件中使用黄色背景红色文本显示 "Validation Failed!"。CompareValidator 2在此例中,我们在 .aspx 文件中声明了两个 TextBox,一个 ListBox 控件,一个 Button 控件,以及一个 CompareValidator 控件。check_operator() 函数把 ListBox 控件中选取的运算符设置为 CompareValidator 控件的运算符,然后对 CompareValidator 控件进行验证。如果验证失败,将在 CompareValidator 控件中使用黄色背景和红色文本显示 "Validation Failed!"。4.FileUpload控件 FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器。用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles\TestFile.txt)来指定要上载的文件。用户也可以通过单击“浏览”按钮,然后在“选择文件”对话框中定位文件来选择文件。 用户选择要上载的文件后,FileUpload 控件不会自动将该文件保存到服务器。您必须显式提供一个控件或机制,使用户能提交指定的文件。例如,可以提供一个按钮,用户单击它即可上载文件。为保存指定文件所写的代码应调用 SaveAs 方法,该方法将文件内容保存到服务器上的指定路径。通常,在引发回发到服务器的事件的事件处理方法中调用 SaveAs 方法。 在文件上传的过程中,文件数据作为页面请求的一部分,上传并缓存到服务器的内存中,然后再写入服务器的物理硬盘中。 有三个方面需要注意: 1.确认是否包含文件 在调用 SaveAs 方法将文件保存到服务器之前,使用 HasFile 属性来验证 FileUpload 控件确实包含文件。若 HasFile 返回 true,则调用 SaveAs 方法。如果它返回 false,则向用户显示消息,指示控件不包含文件。不要通过检查PostedFile 属性来确定要上载的文件是否存在,因为默认情况下该属性包含 0 字节。因此,即使 FileUpload 控件为空,PostedFile 属性仍返回一个非空值。 2.文件上传大小限制 默认情况下,上传文件大小限制为 4096 KB (4 MB)。可以通过设置 httpRuntime 元素的 maxRequestLength 属性来允许上载更大的文件。若要增加整个应用程序所允许的最大文件大小,请设置 Web.config 文件中的 maxRequestLength 属性。若要增加指定页所允许的最大文件大小,请设置 Web.config 中 location 元素内的 maxRequestLength 属性。 上载较大文件时,用户也可能接收到以下错误信息: aspnet_wp.exe (PID: 1520) was recycled because memory consumption exceeded 460 MB (60 percent of available RAM). 以上信息说明,上传文件的大小不能超过服务器内存大小的60%。这里的60%是Web。config文件的默认配置,是<processModel>配置节中的 memoryLimit 属性默认值。虽然可以修改,但是如果上传文件越大,成功几率越小,不建议使用。 3.上传文件夹的写入权限 应用程序可以通过两种方式获得写访问权限。您可以将要保存上载文件的目录的写访问权限显式授予运行应用程序所使用的帐户。您也可以提高为 ASP.NET 应用程序授予的信任级别。若要使应用程序获得执行目录的写访问权限,必须将 AspNetHostingPermission 对象授予应用程序并将其信任级别设置为 AspNetHostingPermissionLevel.Medium 值。提高信任级别可提高应用程序对服务器资源的访问权限。请注意,该方法并不安全,因为如果怀有恶意的用户控制了应用程序,他(她)也能以更高的信任级别运行应用程序。最好的做法就是在仅具有运行该应用程序所需的最低特权的用户上下文中运行 ASP.NET 应用程序。 FileUpload控件的常用属性:属性 数据类型 说明 FileBytes byte[] 获取上传文件的字节数组 FileContent Stream 获取指定上传文件的Stream对象 FileName String 获取上传文件在客户端的文件名称 HasFile Bool 获取一个布尔值,用于表示FileUpload控件是否已经包含一个文件 PostedFile HttpPostedFile 获取一个与上传文件相关的HttpPostedFile对象,使用该对象可以获取上传文件的相关属性可以通过3种方法访问上传文件:1.通过FileBytes属性。该属性将上传文件数据置于字节数组中,遍历该数组,则能够以字节方式了解上传文件的内容。2.通过FileContent属性。调用该属性可以获得一个指向上传文件的Stream对象。可以使用该属性读取上传文件数据,并使用FileBytes属性显示文件内容。3.通过PostedFile属性。调用该属性可以获得一个与上传文件相关的HttpPostedFile对象,使用该对象可以获得与上传文件相关的信息。例如,调用HttpPostedFile对象的ContentLength,可以获得上传文件大小;调用HttpPostedFile对象的ContentType属性,可以获得上传文件的类型;调用HttpPostedFile对象的FileName属性,可以获得上传文件在客户端的完整路径(调用FileUpload控件的FileName属性,仅能获得文件名)。5.DataAdapter表示一组 SQL 命令和一个数据库连接,它们用于填充 DataSet和更新数据源。 命名空间:System.Data.Common程序集:System.Data(在 system.data.dll 中)语法 public class DataAdapter : Component, IDataAdapterDataAdapter 用作 DataSet 和数据源之间的桥接器以便检索和保存数据。DataAdapter 通过映射Fill(这更改了 DataSet 中的数据以便与数据源中的数据相匹配)和Update(这更改了数据源中的数据以便与 DataSet 中的数据相匹配)来提供这一桥接器。如果所连接的是 SQL Server 数据库,则可以通过将SqlDataAdapter与关联的SqlCommand和SqlConnection对象一起使用,从而提高总体性能。对于支持 OLE DB 的数据源,请使用 DataAdapter 及其关联的OleDbCommand和 OleDbConnection 对象。对于支持 ODBC 的数据源,请使用 DataAdapter 及其关联的OdbcCommand和OdbcConnection对象。对于 Oracle 数据库,请使用 DataAdapter 及其关联的OracleCommand和OracleConnection对象。当创建 DataAdapter 的实例时,读/写属性将被设置为初始值。有关这些值的列表,请参见 DataAdapter 构造函数这些都出自网络。其实我也不懂。能帮一点帮一点吧。

❷ thinkphp3.2.3 怎么上传form表单

上传表单在ThinkPHP中使用上传功能无需进行特别处理。例如,下面是一个带有附件上传的表单提交:<form action="__URL__/upload" enctype="multipart/form-data" method="post" ><input type="text" name="name" /><input type="file" name="photo" /><input type="submit" value="提交" ></form>注意,要使用上传功能 你的表单需要设置 enctype="multipart/form-data"多文件上传支持如果需要使用多个文件上传,只需要修改表单,把<input type='file' name='photo'>改为<input type='file' name='photo1'><input type='file' name='photo2'><input type='file' name='photo3'>或者<input type='file' name='photo[]'><input type='file' name='photo[]'><input type='file' name='photo[]'>两种方式的多附件上传系统的文件上传类都可以自动识别。上传操作ThinkPHP文件上传操作使用Think\Upload类,假设前面的表单提交到当前控制器的upload方法,我们来看下upload方法的实现代码:public function upload(){$upload = new \Think\Upload();// 实例化上传类$upload->maxSize = 3145728 ;// 设置附件上传大小$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型$upload->rootPath = './Uploads/'; // 设置附件上传根目录$upload->savePath = ''; // 设置附件上传(子)目录// 上传文件$info = $upload->upload();if(!$info) {// 上传错误提示错误信息$this->error($upload->getError());}else{// 上传成功$this->success('上传成功!');}}上传类对图片文件的上传安全做了支持,如果企图上传非法的图像文件,系统会提示 非法图像文件。 为了更好的使用上传功能,建议你的服务器开启finfo模块支持上传参数在上传操作之前,我们可以对上传的属性进行一些设置,Upload类支持的属性设置包括:属性描述maxSize文件上传的最大文件大小(以字节为单位),0为不限大小rootPath文件上传保存的根路径savePath文件上传的保存路径(相对于根路径)saveName上传文件的保存规则,支持数组和字符串方式定义saveExt上传文件的保存后缀,不设置的话使用原文件后缀replace存在同名文件是否是覆盖,默认为falseexts允许上传的文件后缀(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空mimes允许上传的文件类型(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空autoSub自动使用子目录保存上传文件 默认为truesubName子目录创建方式,采用数组或者字符串方式定义hash是否生成文件的hash编码 默认为truecallback检测文件是否存在回调,如果存在返回文件信息数组上面的属性可以通过两种方式传入:实例化传入我们可以在实例化的时候直接传入参数数组,例如:$config = array('maxSize' => 3145728,'rootPath' => './Uploads/','savePath' => '','saveName' => array('uniqid',''),'exts' => array('jpg', 'gif', 'png', 'jpeg'),'autoSub' => true,'subName' => array('date','Ymd'),);$upload = new \Think\Upload($config);// 实例化上传类关于saveName和subName的使用后面我们会有详细的描述。动态赋值支持在实例化后动态赋值上传参数,例如:$upload = new \Think\Upload();// 实例化上传类$upload->maxSize = 3145728;$upload->rootPath = './Uploads/';$upload->savePath = '';$upload->saveName = array('uniqid','');$upload->exts = array('jpg', 'gif', 'png', 'jpeg');$upload->autoSub = true;$upload->subName = array('date','Ymd');上面的设置和实例化传入的效果是一致的。上传文件信息设置好上传的参数后,就可以调用Think\Upload类的upload方法进行附件上传,如果失败,返回false,并且用getError方法获取错误提示信息;如果上传成功,就返回成功上传的文件信息数组。$upload = new \Think\Upload();// 实例化上传类$upload->maxSize = 3145728 ;// 设置附件上传大小$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型$upload->rootPath = './Uploads/'; // 设置附件上传根目录$upload->savePath = ''; // 设置附件上传(子)目录// 上传文件$info = $upload->upload();if(!$info) {// 上传错误提示错误信息$this->error($upload->getError());}else{// 上传成功 获取上传文件信息foreach($info as $file){echo $file['savepath'].$file['savename'];}}每个文件信息又是一个记录了下面信息的数组,包括:属性描述key附件上传的表单名称savepath上传文件的保存路径name上传文件的原始名称savename上传文件的保存名称size上传文件的大小type上传文件的MIME类型ext上传文件的后缀类型md5上传文件的md5哈希验证字符串 仅当hash设置开启后有效sha1上传文件的sha1哈希验证字符串 仅当hash设置开启后有效文件上传成功后,就可以使用这些文件信息来进行其他的数据操作,例如保存到当前数据表或者单独的附件数据表。例如,下面表示把上传信息保存到数据表的字段:$model = M('Photo');// 取得成功上传的文件信息$info = $upload->upload();// 保存当前数据对象$data['photo'] = $info[0]['savename'];$data['create_time'] = NOW_TIME;$model->add($data);单文件上传upload方法支持多文件上传,有时候,我们只需要上传一个文件,就可以使用Upload类提供的uploadOne方法上传单个文件,例如:public function upload(){$upload = new \Think\Upload();// 实例化上传类$upload->maxSize = 3145728 ;// 设置附件上传大小$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型$upload->rootPath = './Uploads/'; // 设置附件上传根目录// 上传单个文件$info = $upload->uploadOne($_FILES['photo1']);if(!$info) {// 上传错误提示错误信息$this->error($upload->getError());}else{// 上传成功 获取上传文件信息echo $info['savepath'].$info['savename'];}}uploadOne方法上传成功后返回的文件信息和upload方法的区别是只有单个文件信息的一维数组。上传文件的命名规则上传文件的命名规则(saveName)用于确保文件不会产生冲突或者覆盖的情况。命名规则的定义可以根据你的业务逻辑来调整,不是固定的。例如,如果你采用时间戳的方式来定义命名规范,那么在同时上传多个文件的时候可能产生冲突(因为同一秒内可以上传多个文件),因此你需要根据你的业务需求来设置合适的上传命名规则。这里顺便来说下saveName参数的具体用法。一、采用函数方式如果传入的字符串是一个函数名,那么表示采用函数动态生成上传文件名(不包括文件后缀),例如:// 采用时间戳命名$upload->saveName = 'time';// 采用GUID序列命名$upload->saveName = 'com_create_guid';也可以采用用户自定义函数// 采用自定义函数命名$upload->saveName = 'myfun';默认的命名规则设置是采用uniqid函数生成一个唯一的字符串序列。saveName的值支持数组和字符串两种方式,如果是只有一个参数或者没有参数的函数,直接使用字符串设置即可,如果需要传入额外的参数,可以使用数组方式,例如:// 采用date函数生成命名规则 传入Y-m-d参数$upload->saveName = array('date','Y-m-d');// 如果有多个参数需要传入的话 可以使用数组$upload->saveName = array('myFun',array('__FILE__','val1','val2'));如果需要使用上传的原始文件名,可以采用__FILE__传入,所以上面的定义规则,最终的结果是 myFun('上传文件名','val1','val2')执行的结果。二、直接设置上传文件名如果传入的参数不是一个函数名,那么就会直接当做是上传文件名,例如:$upload->saveName = time().'_'.mt_rand();表示上传的文件命名采用时间戳加一个随机数的组合字符串方式。当然,如果觉得有必要,你还可以固定设置一个上传文件的命名规则,用于固定保存某个上传文件。$upload->saveName = 'ThinkPHP';三、保持上传文件名不变如果你想保持上传的文件名不变,那么只需要设置命名规范为空即可,例如:$upload->saveName = '';一般来说不建议保持不变,因为会导致相同的文件名上传后被覆盖的情况。子目录保存saveName只是用于设置文件的保存规则,不涉及到目录,如果希望对上传的文件分子目录保存,可以设置autoSub和subName参数来完成,例如:// 开启子目录保存 并以日期(格式为Ymd)为子目录$upload->autoSub = true;$upload->subName = array('date','Ymd');可以使用自定义函数来保存,例如:// 开启子目录保存 并调用自定义函数get_user_id生成子目录$upload->autoSub = true;$upload->subName = 'get_user_id';和saveName参数一样,subName的定义可以采用数组和字符串的方式。注意:如果get_user_id函数未定义的话,会直接以get_user_id字符串作为子目录的名称保存。子目录保存和文件命名规则可以结合使用。上传驱动上传类可以支持不同的环境,通过相应的上传驱动来解决,默认情况下使用本地(Local)上传驱动,当然,你还可以设置当前默认的上传驱动类型,例如:'FILE_UPLOAD_TYPE' => 'Ftp','UPLOAD_TYPE_CONFIG' => array('host' => '192.168.1.200', //服务器'port' => 21, //端口'timeout' => 90, //超时时间'username' => 'ftp_user', //用户名'password' => 'ftp_pwd', //密码 ),表示当前使用Ftp作为上传类的驱动,上传的文件会通过FTP传到指定的远程服务器。也可以在实例化上传类的时候指定,例如:$config = array('maxSize' = 3145728,'rootPath' = './Uploads/','savePath' = '','saveName' = array('uniqid',''),'exts' = array('jpg', 'gif', 'png', 'jpeg'),'autoSub' = true,'subName' = array('date','Ymd'),);$ftpConfig = array('host' => '192.168.1.200', //服务器'port' => 21, //端口'timeout' => 90, //超时时间'username' => 'ftp_user', //用户名'password' => 'ftp_pwd', //密码 );$upload = new \Think\Upload($config,'Ftp',$ftpConfig);// 实例化上传类目前已经支持的上传驱动包括Local、Ftp、Sae、Bcs、七牛和又拍云等。

❸ 怎么在js 里面限制上传图片的大小不能超过 1M

这样设置的:

1、先用标签创建一个上传的表单。

<formid="form1"name="form1"method="post"action=""enctype="multipart/form-data"><p><inputtype="hidden"name="MAX_FILE_SIZE"value="100000"/></p><p><inputname="userfile"id="userfile"type="file"onchange="check()"/></p></form>

2、用javascript设置格式和大小。

<scriptlanguage="JavaScript"type="text/javascript">functioncheck(){varaa=document.getElementById("userfile").value.toLowerCase().split('.');//以“.”分隔上传文件字符串//varaa=document.form1.userfile.value.toLowerCase().split('.');//以“.”分隔上传文件字符串if(document.form1.userfile.value==""){alert('图片不能为空!');returnfalse;}else{if(aa[aa.length-1]=='gif'||aa[aa.length-1]=='jpg'||aa[aa.length-1]=='bmp'||aa[aa.length-1]=='png'||aa[aa.length-1]=='jpeg')//判断图片格式{varimagSize=document.getElementById("userfile").files[0].size;alert("图片大小:"+imagSize+"B")if(imagSize<1024*1024*1)alert("图片大小在1M以内,为:"+imagSize/(1024*1024)+"M");returntrue;}else{alert('请选择格式为*.jpg、*.gif、*.bmp、*.png、*.jpeg的图片');//returnfalse;}}}</script>

图片超过1M则不能上传 如图:

❹ springmvc项目中JSP页面有一个form表单带文件上传,配置了post请求方式 ,con

首先要搞清楚Http中Get/Post请求区别:(1)get是从服务器上获取数据,post是向服务器传送专数据。属(1)在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。(2)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。(2)GET方式提交的数据最多只能有1024字节,而POST则没有此限制。(3)安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。

❺ 如何通过配置php文件限制上传文件的大小

在网站开发的过程中,为了确保能够充分利用服务器的空间,在开发上传功能时,必须对上传文件的大小进行控制。那么我们如何进行对上传文件的大小进行控制呢?

控制文件的大小可以从两个方面入手:

第一个是在PHP的配置文件php.ini中对上传文件进行控制,如果上传文件超过它指定的范围,那么执行上传就会识别。

第二个是在PHP配置文件允许的范围内,在程序中对上传文件的大小进行控制!

一:通过配置文件控制上传文件

PHP中通过php.ini文件对上传文件进行控制,包括是否支持上传,上传文件的临时文件目录,上传文件的大小,指令执行时间,指令分配的内存空间。

在php.ini中,定义 File Uploads项,完成对上传相关选项的设置。上传相关选项的含义如下:

file_uploads:如果值是 no,说明服务器支持上传文件,如果为off ,那么则不支持。一般默认是支持的,这个不用修改!

upload_tmp_dri:上传文件临时目录。文件被成功上传之前,文件首先存放到服务器端的临时目录中。多数使用系统默认目录,但是也可以自行设置!

upload_max_filesize:服务器允许上传文件的最大值,以MB为单位,系统默认为2MB,如果网站需要上传超过2MB的数据,那么就要修改这个值!

上述是php.ini中 File_Uploads项中与上述相关参数设置说明,除了File_Uploads项中的内容外,在php.ini中还有其他几个选项会影响到文件的上传~

max_execution_time:PHP中一个指令所能执行的最大时间,单位为秒。该选项在上传超大文件时必须要修改,否则即使上传文件在服务器允许的范围内,但是若超过了指令所能执行的最大时间,仍然无法实现上传~

memory_limit:PHP中一个指令所分配的内存空间,单位是 MB 。它的大小同样会影响得到超大文件的上传!

二:在程序中控制上传文件

在客户端控制上传文件应用的是 form 表单中的 enctype 和 method属性以及隐藏域 MAX_FILE_SIZE。

enctype = “multipart/form-data”:指定表单编码数据方式。

method = “post”:指定数据的传输方式。

<input type = "hidden" name="MAX_FILE_SIZE" value=“10000”/>:通过隐藏域控制上传文件的大小(单位为字节),该值不能超过php.ini配置文件中 upload_max_filesize 选项设置的值,它不能喝完全控制上传文件的大小。只是可以避免一些不必要的麻烦。

技巧:

在应用隐藏域<input type = "hidden" name="MAX_FILE_SIZE" value=“10000”/>控制文件上传大小时,必须将其放置在文件域之前,否则是不能发挥作用的!

❻ 如何设置PHP上传文件大小限制

修改一下.ini文件。需要服务器权限才可修改!!需要在PHP.ini里设置以下几项:1. post_max_size =10M 表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等…2.file_uploads = On 是否允许上传文件,如果为OFF您将不能上传文件.3.upload_tmp_dir = "D:/APM/PHP/uploadtemp/" 上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.4.upload_max_filesize =2M 最大上传文件大小,此项针对上传文件时单个文件的大小.与post_max_size之间的关系:在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.您可以在WEB目录下建立一个php文件,内容很简单就一句话代码:<?phpphpinfo();?>浏览器中查看此文件, Configuration File (php.ini) Path 此项对应的就是您的PHP当前正在使用的php.ini文件了.