文件上传的基本知识

 1 <?php
 2 //获取提交文件的相关信息需要用$_FILES[] file数组获取
 3 //取文件信息
 4 $arr =$_FILES["file"];
 5 //var_dump($arr["name"]);
 6 //$arr["name"]原来的文件名
 7
 8 //用户上传的临时文件的路径
 9 //$arr["tmp_name"];
10
11 //我们想把这个文件存放的位置是当前文件夹的images文件夹里并且重新命名该文件为11.jpg
12 $filename = "./images/11.jpg";
13
14 //windows系统采用的编码格式不是UTF-8的形式而是 国标的gb2312格式
15 //所以往windows里面存东西的时候要转化为国标的gb2312的编码格式存储才可以
16 //转换编码格式: 意思就是将$filename的编码格式UTF-8转化为gb2312的格式形成一个新的$filename
17 $filename = iconv("UTF-8","gb2312",$filename);
18
19 //移动临时文件到我们想存放的位置
20 //括号内的第一个参数是临时文件的路径  也就是 $arr["tmp_name"];
21 //第二个参数是要移动到的位置 也就是 $filename
22 move_uploaded_file($arr["tmp_name"],$filename);
23
24
25
26
27
28
29
30
31 <?php
32 //添加上传文件的限制条件
33 //1.控制文件的类型
34 //2.控制文件的大小
35 //3.保存的文件名不重复
36
37 if($arr["type"]=="image/jpeg" || $arr["type"]=="image/png" && $arr["size"]<1024000)
38 {
39     //在新建的文件的名里面拼加用户名和时间戳来防止文件重复
40     $filename = "./images/".$uid.time().$arr["name"];  //在保存之前加if语句判断
41
42     if(file_exists($filename))        //保存之前判断该文件是否存在
43     {
44         echo "该文件已存在";
45     }
46     else
47     {
48         $filename = iconv("UTF-8","gb2312",$filename);
49         move_uploaded_file($arr["tmp_name"],$filename);
50     }
51 }
52 else
53 {
54     echo "上传的文件大小或类型不正确";
55 }

//前台页面(接上面):

 1 </head>
 2
 3 <body>
 4 <h1>上传文件</h1>
 5
 6 enctype="multipart/form-data"  //如果是上传文件的话得需要写个属性enctype代表规定了一个数据类型
 7
 8
 9 <form action="chuli.php" method="post" enctype="multipart/form-data">
10 请选择文件:<input type="file" name="file" />
11           <input type="submit" value="上传" />
12
13
14 </form>
15     //一点击上传,它就把这个文件放在服务器上一个暂时存放临时文件的地方,然后把上传这个文件的相关信息交给
16     //action的处理页面
17     //文件存放在服务器存放临时文件的地方
18     //文件的相关信息交给处理页面
19 </body>
20
21 </html>
时间: 2024-10-11 22:22:23

文件上传的基本知识的相关文章

Form的一点基础知识,实现文件上传

form用于提交文件需要修改其entype属性. enctype属性:规定在发送表单数据之前如何对其进行编码. 默认情况,enctype的编码格式是application/x-www-form-urlencoded,不能用于文件上传: 需要文件上传时需要将编码方式修改为:multipart/form-data 以下是关于enctype属性的值介绍: application/x-www-form-urlencoded:[默认] 在发送前编码所有字符(空格转换为 "+" 加号,特殊符号转换

ASP.NET知识总结(5.文件上传 6.文件下载)

5.文件上传 ->说明:使用http协议只适合传输小文件,如果想传递大文件,则需要使用插件或者客户  端程序(使用ftp协议) ->客户端操作 <1>为表单添加属性:enctype="multipart/form-data" <2>在表单中添加控件:<input type="file" name="f1"/> <3>表单必须使用post提交方式 ->服务器端操作 <1>

文件上传绕过知识总结一

前言 重新学习漏洞原理,记录下文件上传的绕过姿势 客户端的检测: 1 function checkFile() { 2 var file = document.getElementsByName('upload_file')[0].value; 3 if (file == null || file == "") { 4 alert("请选择要上传的文件!"); 5 return false; 6 } 7 //定义允许上传的文件类型 8 var allow_ext =

Struts2单文件上传原理及示例

一.文件上传的原理 表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值: 1.application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里的value属性值,采用这种编码方式的表单会将表单域的值处理成URL编码方式. 2.multipart/form-data:这种编码方式的表单会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里. 3.text/plain:这种方式主要适用于直接通过表单发送邮件的

Java文件上传

本文转载自 文件上传与 Angular 最近项目需要使用 Angular,对于初学 Angular 的我只能硬着头皮上了,项目中有一个需求是文件上传,磕磕绊绊之下也实现了,将实现过程中学习到的一些知识记录下来以备将来查阅. 与表单数据编码相关的知识 通常,我们使用 HTML 的标签 <form> 来为用户输入创建一个表单,使用 <input type="file"> 作为文件上传的控件. 要将表单的数据发送给后台,不仅要通过指定 <form> 的属性

文件上传更新服务相关

需求: 客户端向服务端发送一次请求,请求是一系列配置文件的文件名.当前客户端所持有文件的版本号.期待服务端返回的数据形式(url或二进制数据).当请求的配置文件有更新,服务端返回相应的url或二进制数据.之所以要分url和二进制数据,因为有的配置文件比较小且比较重要需要马上获取到数据:而有的配置文件稍微大一些,重要性比较低,可以在客户端拉线程慢慢下. 最终实现: 分为后台管理系统(负责文件上传)和数据更新服务. 文件上传部分是用Vue.js+KOA实现.其中关于文件上传那块,浏览器端使用Ajax

jQuery插件之路(三)——文件上传(支持拖拽上传)

好了,这次咱一改往日的作风,就不多说废话了,哈哈.先贴上源代码地址,点击获取.然后直接进入主题啦,当然,如果你觉得我有哪里写的不对或者欠妥的地方,欢迎留言指出.在附上一些代码之前,我们还是先来了解下,上传文件的时候需要利用的一些必要的知识. 首先我们要说的就是FileReader对象,这是一个HTML5提出的,专门用来异步的读取用户计算机上文件的对象,这里有详细的介绍.所以如果我们想要使用它,那么首先我们得先创建一个FileReader对象. var fr = new FileReader()

PDF在线解决方案(1)--文件上传

前言:最近参与了一个项目,客户要求把系统所有用户提交的所有电子文件(主要是word.Excel.图片等)都转化为PDF格式保存,并且要能支持在线查看.自动加签(添加图片印章.数字证书)等功能,因为之前也没有接触这方面的知识在项目开发过程中也是遇到了诸多困难,但庆幸的是通过自己研究.百度等方法得到了解决,最后的效果还算令人满意,趁现在项目比较空闲把整个实现方案做个介绍. 一.demo效果图 选择文件提交后,在后台先转成pdf文件,然后再转化为swf文件在前台展示! demo比较简陋,没做太多修饰,

struts2中的文件上传和下载

天下大事,必做于细.天下难事,必作于易. 曾经见过某些人,基础的知识还不扎实就去学习更难的事,这样必然在学习新的知识会很迷惑结果 再回来重新学习一下没有搞懂的知识,这必然会导致学习效率的下降!我写的这篇上传和下载都很基础. 十分适合初学者! jsp:页面 <!--在进行文件上传时,表单提交方式一定要是post的方式,因为文件上传时二进制文件可能会很大,还有就是enctype属性,这个属性一定要写成multipart/form-data, 不然就会以二进制文本上传到服务器端--> <for