php上传文件

PHP文件处理

让人想犯罪 __ 提交于 2019-12-06 11:33:22
PHP的函数支持创建,读取,上传以及编辑文件操作。常见文件操作错误有: 1.编辑错误的文件 2.被垃圾数据填满硬盘 3.意外删除文件内容 文件读取: readfile()函数:该函数读取文件,并把它写入输出缓冲。假设有一个名为webdictionary.txt的文件,放在服务器上,如下: AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language 读取该文件并写入输出流的代码readfile.php如下,若读取成功则函数返回字节数: <html> <head> <meta charset="utf-8"> </head> <body> <?php print("<pre>"); echo readfile("webdictionary.txt"); print("</pre>"); ?> </body> </html> 如下,其中print("<pre>")与print("</pre>"

PHP上传文件和下载

空扰寡人 提交于 2019-12-05 17:37:45
PHP 中文件上传的基础知识: 1)客户端 form 表单设置 2) 服务器对上传文件进行操作处理 必须设置的 form 表单项: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="./doup.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form> </body> </html> 注意几个特征属性: 1. 一定是 post 方式上传文件,不可用 get 方式。 2. form 表单中一定要写 enctype="multipart/form-data"。 3. input 表单一定要写 name 名。 1.2 在服务器端通过 PHP 处理上传 上传文件的接收和处理是通过 PHP 脚本来处理的,具体需要通过以下三个方面信息: 1)设置 PH 配置文件中的指令:用于精细地调节 PHP 的文件上传功能。 2)$FILES 多维数组:用于存储各种与上传文件有关的信息,其他数据还是使用 $_POST 获取。 3)PHP 的文件上传处理函数

PHP实现单文件上传、多个单文件上传、多文件上传的过程化封装

有些话、适合烂在心里 提交于 2019-12-05 17:34:27
上回提到 PHP的单个文件上传、多个单文件上传、多文件上传 这里给出 三种方式的统一实现 下面先给出各种方式的文件提交页面: 单个文件上传 upload1.php <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>单文件上传</title> </head> <body> <form action="doAction5.php" method="post" enctype="multipart/form-data"> 请选择您要上传的文件: <input type="file" name="myFile"/><br/> <input type="submit" value="上传文件"/> </form> </body> </html> 多个单文件上传 upload2.php <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>多个单文件上传</title> </head> <body> <form action="doAction5.php" method="post" enctype="multipart/form-data"> 请选择您要上传的文件:<input type="file" name=

异步上传文件并获得返回值(完全跨域)

本秂侑毒 提交于 2019-12-04 05:51:17
异步上传文件并获得返回值(完全跨域) AJAX可以进行数据的异步请求,但对于文件和跨域问题却束手无策。 Jsonp可以进行跨域数据的异步请求,但同样不能使用于文件。 <form>表单可以进行跨域数据和文件的上传,但却会使页面跳转。 那么如何同时实现“异步”+“跨域”+“文件”+“返回值”这几个特性呢?方法如下: 原理: 将<form>表单通过一个iframe来submit,也就是将<form>的target属性设置为一个iframe的id,这样<form>的action URL就会在这个iframe中 打开,那么服务器的返回数据也就会输出到iframe中了。最后再通过主页面也iframe之间的交互完成对返回数据的读取(这涉及到跨域问题, 文章后面将介绍此问题的解决方法)。 基本结构: 前端部分(当前域名:www.test.com,与form中的action域名相同) <form action="http://www.test.com/io.php" method="POST" enctype="multipart/form-data" target="upload"> <input type="file" name="upload_file" /> <input type="submit" value="开始上传" /> </form> <iframe name="upload"

ajax iframe无刷新上传文件

落爺英雄遲暮 提交于 2019-12-04 00:18:08
首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是不可能的。 而本文实现的文件上传也是无页面刷新的,可以说是一种"类似AJAX"方法。 开始之前先说两句无关的,其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame来做到这一点。当然Ajax出现之后,人们一窝蜂地投奔Ajax 的阵营了,iFrame 就乏人问津了。但是用iFrame来实现无刷新上传文件确实一个很好的选择。ps:Ajax技术基本上可以说是由google公司带起来的,但少Gmail中上传文件用的还是 IFrame,所以说使用IFrame来上传文件是最好的选择。 我在这里这里用的技术是jsp,其实asp,php等也是一样可以这么实现的 一共两个文件就可实现:index.html 和 upload.jsp,在这里讲解一下,文后会附上源码 --index.html html 代码 <html> <body> <form action= "upload.jsp" id= "form1" name= "form1" encType= "multipart/form-data" method= "post" target= "hidden_frame" >

【完全跨域】异步上传文件并获得返回值

◇◆丶佛笑我妖孽 提交于 2019-12-03 02:52:57
【完全跨域】异步上传文件并获得返回值 作者:php-note.com 发布于:2015-03-01 10:58 分类:JS/jQuery 浏览(595) AJAX可以进行数据的异步请求,但对于文件和跨域问题却束手无策。 Jsonp可以进行跨域数据的异步请求,但同样不能使用于文件。 <form>表单可以进行跨域数据和文件的上传,但却会使页面跳转。 那么如何同时实现“异步”+“跨域”+“文件”+“返回值”这几个特性呢?方法如下: 原理: 将<form>表单通过一个iframe来submit,也就是将<form>的target属性设置为一个iframe的id,这样<form>的action URL就会在这个iframe中打开,那么服务器的返回数据也就会输出到iframe中了。最后再通过主页面与iframe之间的交互完成对返回数据的读取(这涉及到跨域问题,文章后面将介绍此问题的解决方法)。 基本结构: 前端部分(当前域名:www.test.com,与form中的action域名相同) 1 <form action="http://www.test.com/io.php" method="POST" enctype="multipart/form-data" target="upload"> 2 3 <input type="file" name="upload_file" /> 4 5

为什么上传文件的表单需要设置enctype=&quot;multipart/form-data&quot;

匿名 (未验证) 提交于 2019-12-03 00:22:01
本文转载自: https://blog.csdn.net/mazhibinit/article/details/49667511 在学习PHP文件上传的过程中发现,HTML表单需要设置 enctype="multipart/form-data" 这个属性,虽然不这么设置的确无法上传,但这是为什么呢? HTML表单如何打包数据文件是由enctype这个属性决定的。enctype有以下几种取值: application/x-www-form-urlencoded 在发送前编码所有字符(默认)(空格被编码为’+’,特殊字符被编码为ASCII十六进制字符) multipart/form-data text/plain 默认 enctype=application/x-www-form-urlencoded ,所以表单的内容会按URL规则编码,然后根据表单的提交方法: method=’get’ 编码后的表单内容附加在请求连接后 method=’post’ 编码后的表单内容作为post请求的正文内容 我们通过抓包软件来分析一下这几种方式产生的请求的差别 实验一 条件 method='get' enctype=application/x-www-form-urlencoded 对应的html代码为: < form action = "xxx" method = "get" > < input

上传文件multipart form-data boundary 说明

匿名 (未验证) 提交于 2019-12-02 23:52:01
含义 ENCTYPE="multipart/form-data" 说明: 通过 http 协议上传文件 rfc1867协议概述,客户端发送内容构造。 在最初的 http 协议中,没有上传文件方面的功能。 rfc1867为 http 协议添加了这个功能。客户端的浏览器,如 Microsoft IE, Mozila, Opera 等,按照此规范将用户指定的文件发送到服务器。服务器端的网页程序,如 php, asp, jsp 等,可以按照此规范,解析出用户发送来的文件。Microsoft IE, Mozila, Opera 已经支持此协议,在网页中使用一个特殊的 form 就可以发送文件。绝大部分 http server ,包括 tomcat ,已经支持此协议,可接受发送来的文件。各种网页程序,如 php, asp, jsp 中,对于上传文件已经做了很好的封装。 <form action="upFile.php" enctype="multipart/form-data" method="post"> <input name="myflie" type="file" /> <input type="submit" /> 注意 enctype="multipart/form-data", method=post, type="file" 。根据 rfc1867, 这三个属性是必须的

thinkphp上传文件无权限问题

匿名 (未验证) 提交于 2019-12-02 22:11:45
问题 上传文件后获得文件路径: $ path=’E:\WWW\tp5\public\uploads\1.jpg’; 接着unlink($path); 报错没有权限Permission denied 思考 但是直接设置这个变量重新访问就可以删除,说明根本不是没有权限; 另外用原生php接收文件也可以删除, 怀疑是不是tp没有关闭导致无法删除? 解决 $ move_url = config(‘excel_path’); $ file = request()->file(‘xls_file’); $ info = $ file->validate([‘size’=>52428800,’ext’=>’xls,xlsx’])->rule(‘uniqid’)->move( $ move_url); unset( $ info); 总结 问题解决,给大家一个参考吧!原因正是我所怀疑的哪样,在使用文件对象的时候没有完全关闭句柄。解决方法只需要在上传逻辑完成之后清空释放一下变量就可以,也就是使用php内置函数unset就可以解决 文章来源: thinkphp上传文件无权限问题

html+php上传图片文件到服务器

匿名 (未验证) 提交于 2019-12-02 22:10:10
1 <body> 2 <form action="" method="post" enctype="multipart/form-data" name="upload_form"> 3 <label>选择图片文件</label> 4 <input name="imgfile" type="file" accept="image/gif, image/jpeg"/> 5 <input name="upload" type="submit" value="上传" /> 6 </form> 7 </body> 1 if (isset($_FILES['imgfile']) 2 && is_uploaded_file($_FILES['imgfile']['tmp_name'])) 3 { 4 $imgFile = $_FILES['imgfile']; 5 $upErr = $imgFile['error']; 6 if ($upErr == 0) 7 { 8 $imgType = $imgFile['type']; //文件类型。 9 /* 判断文件类型,这个例子里仅支持jpg和gif类型的图片文件。*/ 10 if ($imgType == 'image/jpeg' 11 || $imgType == 'image/gif') 12 { 13 $imgFileName =