95)PHP,文件上传知识和代码
首先是知识总结:
上传:
从浏览器端传输的到服务器端。
请求时:
数据从浏览器端传输到服务器端。 可见:
上传,发生在浏览器向服务器发出请求过程中。 文件,对于浏览器来讲,就是表单中的一个特殊类型的数据而已 浏览器表单中的数据:两种类型。
, 字符串类型。(字节流编码)
, 文件类型。(二进制编码)
(tip:文件就是表单中数据的一部分) 提交表单时,浏览器自动将表单内的数据,传输到服务器端,文件型也会包含在内。 服务器角度:
在接受浏览器的请求时,处理好表单内数据。 根据数据类型不同(2种),采用不同的处理方法:
。字符串类型,存储在$_POST变量中(内存中)
。文件型数据,存储到上传临时目录中。(在Windows/Temp中)
简单代码样例:
login.html
<html>
<head>
<title>Form</title>
<meta
http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head> <body>
<form action="index.php" method="post" name="form1" ENCTYPE="multipart/form-data">
<table width="" border="" align="center" cellpadding="" cellspacing="">
<tr>
<td width="">
<div align="right">姓名:</div></td>
<td width="">
<label>
<input name="username" type="text" id="username">
</label>
</td> </tr>
<tr>
<td>
<div align
="right">职业:</div></td>
<td>
<label>
<input name
="job" type="text" id="job">
</label></td>
</tr>
<tr>
<td>
<label>
文件上传:<input type="file" name="picture">
</label>
</td>
</tr>
</table>
<p align="center">
<input type="submit" value="Submit">
</p>
</form>
</body>
</html>
然后是接收数据的php文件:index.php
var_dump($_POST);
echo '<pre>';
echo "<pre>";
echo '\n';
var_dump($_REQUEST);
echo '<pre>';
echo "<pre>";
echo '<pre>';
echo "<pre>";
结果展示:
(2)然后我想叫浏览器自己区分开,我表单的数据到底是字符串还是文件,只需要在<form>标签中加上 enctype="multipart/form-data
具体就是:
然后,你再看我的结果:
其实你看,这结果根本没有显示出我上传的图片,那么我上传的图片哪里去了,
在一个脚本周期内,这个图片是存在与我们电脑的临时文件中的,但是脚本结束,临时文件中这张图片就会消失,那么我们怎么才能看到呢,
在我的那个处理表单数据的php文件:index.php文件添加 sleep(秒数) 让你的脚本延迟结束,这样我们就能在临时文件目录中看到了,下面就是演示:(还可以百度云里的display.mp4)
那个Temp目录在我的C:\Windows\Temp ,临时文件存在哪里,可以自己设置,在php.ini中
(3)对于表单中的文件,我们可以通过用$_FILE来进行处理,比如下面的代码:
<?php var_dump($_POST);
echo '<pre>';
echo "<pre>"; var_dump($_REQUEST);
echo '<pre>';
echo "<pre>";
echo '<pre>';
echo "<pre>"; var_dump($_FILES);
sleep();
// sleep(5);
结果输出:
95)PHP,文件上传知识和代码的更多相关文章
- BootStrap fileinput.js文件上传组件实例代码
1.首先我们下载好fileinput插件引入插件 ? 1 2 3 <span style="font-size:14px;"><link type="t ...
- JAVA中使用FTPClient实现文件上传下载实例代码
一.上传文件 原理就不介绍了,大家直接看代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
- ASP.NET - 多文件上传,纯代码,不使用插件
解决方案: 前段代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Mu ...
- java常见3种文件上传速度对比和文件上传方法详细代码
在java里面文件上传的方式很多,最简单的依然是FileInputStream.FileOutputStream了,在这里我列举3种常见的文件上传方法代码,并比较他们的上传速度(由于代码是在本地测试, ...
- 文件上传transferTo一行代码的bug
本次的项目环境为 Running with Spring Boot v1.5.10.RELEASE, Spring v4.3.14.RELEASE, 服务器环境为CentOS7.0. transfer ...
- 全网最简单的大文件上传与下载代码实现(React+Go)
前言 前段时间我需要实现大文件上传的需求,在网上查找了很多资料,并且也发现已经有很多优秀的博客讲了大文件上传下载这个功能. 我的项目是个比较简单的项目,并没有采用特别复杂的实现方式,所以我这篇文章的目 ...
- HDwiki文件上传导致远程代码执行漏洞
漏洞版本: HDwiki(2011) 漏洞描述: 互动维客开源系统(HDwiki)作为中国第一家拥有自主知识产权的中文维基(Wiki)系统,由互动在线(北京)科技有限公司于2006 年11月28日正式 ...
- SFTP 文件上传下载引用代码
http://sha1064616837.iteye.com/blog/2036996 http://www.cnblogs.com/itmanxgl/p/fe5d33512609fe540eb08a ...
- Rxjava+Retrofit2+Okhttp3多文件上传(服务器端代码+客户端代码)
所有代码亲测可用,如有问题,欢迎指正. 首先在ApiService接口文件中新建文件上传接口 public interface ApiService { static final String BAS ...
随机推荐
- go语言小练习——给定英语文章统计单词数量
给定一篇英语文章,要求统计出所有单词的个数,并按一定次序输出.思路是利用go语言的map类型,以每个单词作为关键字存储数量信息,代码实现如下: package main import ( " ...
- ZOJ 1276 DP
给出一系列的1x2的矩阵,要你求出矩阵以什么样的次序相乘才使得相乘次数最少,.(不用排序,只要决定该矩阵是和前面相乘比较好,还是后面). 今天仔细想了一下,跟之前做的DP题目做了下对比,你比如说猴子堆 ...
- Map的6种遍历方法
声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 探讨有几种遍历Map的方法其实意义并不大,网上的文章一般讲4种或5种的居多,重要的是知道遍历的内涵,从遍历 ...
- Bugku杂项(1—28)
1.签到题 只要关注公众号就可以得到 flag---开胃菜 2.这是一张单纯的图片 用Winhex打开,会发现最下面有一行编码: key{you are right} 是一串HTML编码,解密下就行了 ...
- github新建一个单页
比如可以在github上打开的网页是这种网址形式的:https://01xunsicheng.github.io/yumeihua/ 1.登录后首页找到 New repository 2.新建一个文件 ...
- not in 优化 NOT EXISTS替代
优化前 SELECT id, loan_id, NAME FROM xw_baoxian_interchange WHERE , , ) , ) AND loan_id NOT IN ( SELECT ...
- Python重学记录2
这几天学的不多,只是看了一下相关的视频.最近看的部分比较难,装饰器没有搞懂,__slots__和property也不太明白(这两个知识点是在公交车上看的视频,因为1.5倍速度放的视频,看得快,不太明白 ...
- cookie保存
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- node 第三方库总结
app.post("/todo/add", (request, response) => { request.body //如何拿到前端ajax传来的JSON数据 }) 需要 ...
- 1013A.Piles With Stones
题目出处:http://codeforces.com/contest/1013/problem/A #include<iostream> using namespace std; int ...