解读PHP中上传文件的处理问题_php实例

我们在浏览器中编辑自己的信息,会遇到上传头像;在文库中,我们会上传文档......到处存在“上传”这个词。

  php是最好的语言(其他语言的程序猿们不要打我...)。php在处理交互方面有天然的优势,自然有强大的函数来处理上传文件。

  和提交一般的数据一样,上传文件也需要表单。下面建立一个特殊的表单来上传文件。

<form enctype="multipart/form-data" action="upload_file.php" name="upload_form" method="post">
<!--MAX_FILE_SIZE必须在所有的input之前,以后要是想用上传表单,可以在form之后就写隐藏的input-->
<input type="hidden" name="MAX_FILE_SIZE" value=""/>
上传的文件:
<input type="file" name="userfile"/>
<input type="submit" name="sub_button" value="上传文件的提交按钮"/>
</form>

  ok,我们分析一下这个代码段。

  以上的enctype规定了数据在发送给服务器的时候采用什么编码格式。它有三个值:

  MAX_FILE_SIZE隐藏字段(单位为字节)必须放在文件输入字段之前,其值为文件的最大尺寸。这是对浏览器的一个建议,php也会检查此项。不过在浏览器端可以绕过这个障碍,因此不要指望用它来阻挡大文件。但是文件最大值受php.ini中的post_max_size= (number)M的限制。但是最好还是加上这个项目,它可以避免用户在花时间等待上传大文件之后才发现大文件上传失败的麻烦。

  在用户提交文件表单之后,服务器端就可以接受数据了。PHP中有全局变量$_FILES来处理文件,假设上传字段名称为userfile(可以在字段中随意更改)。

  $_FILES['userfile']['name'] 客户端文件的原名称。
  $_FILES['userfile']['type'] 文件的MIME类型,这个在PHP端并不检查,因此这个值还不一定有。
  $_FILES['userfile']['size'] 上传的文件的大小(单位字节)。
        $_FILES['userfile']['tmp_name'] 文件上传后在服务器端存储的临时文件名。
  $_FILES['userfile']['error'] 和该文件上传相关的错误代码。如果上传成功,值为0.

  文件在上传后,默认存储到服务器默认临时目录中,在php.ini中的upload_tmp_dir设置为其他路径。

  在这里还得说说一个move_uploaded_file()函数:

  这个函数检查并确保由 file 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件。

  如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。

  如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。

  这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

  下面是一个php上传文件实例:

<b>上传文件处理</b>
<?php
if (isset($_FILES['userfile'])) {
$uploaddir = 'upload/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo '上传文件成功'.'<br>';
} else {
echo '上传文件失败'.'<br>';
}
echo '这是上传文件的一些信息:' . '<br>';
print_r($_FILES);
echo '<pre>';
die();
}
?>
<b>上传表单</b>
<!--表单中的enctype属,必须和以下定义保持一致-->
<form enctype="multipart/form-data" action="upload_file.php" name="upload_form" method="post">
<!--MAX_FILE_SIZE必须在所有的input之前,以后要是想用上传表单,可以在form之后就写隐藏的input-->
<input type="hidden" name="MAX_FILE_SIZE" value=""/>
上传的文件:
<input type="file" name="userfile"/>
<hr/>
<input type="submit" name="sub_button" value="上传文件的提交按钮"/>
</form>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php上传文件
php文件上传实例、php 文件上传实例代码、php 上传pdf 实例、php上传图片代码实例、php上传实例,以便于您获取更多的相关知识。

时间: 2024-10-23 20:25:40

解读PHP中上传文件的处理问题_php实例的相关文章

php 生成自动创建文件夹并上传文件的示例代码_php实例

复制代码 代码如下: <?session_start();if($_SESSION['Company']==''){ //exit();}?><?php //上传图片 $uptypes=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','application/x-shockwave-flash','image/x-png'); $max_file_size=5000000; 

新手 求easyui-filebox在struts2中上传文件的例子

问题描述 新手 求easyui-filebox在struts2中上传文件的例子 <div id=""toolbar"" class=""easyui-panel"" align=""right""> <form name=""FileUploadForm"" method=""post""

微信网页中上传文件时“只能选择SD卡中的文件”问题

问题描述 微信网页中上传文件时"只能选择SD卡中的文件"问题 解决方案 这个应该是微信上传文件的设置问题吧,我的也是这样. 解决方案二: 微信有jssdk拍照上传接口,可以看看相关文档. 解决方案三: 应该是设置中的问题吧

解析ASP.NET应用程序中上传文件的方案

在Web程序中上传文件是很常见的需求.利用HTTP协议上传文件的方式非常有限,最常见的莫过于使用<input type="file" />元素进行上传.这种上传方式会将内容使用multipart/form-data方案进行编码,并将内容POST到服务器端.使用multipart/form-data编码方式与默认的application/x-url-encoded编码方式相比,在大数据量情况下效率要高很多. 使用<input type="file"

总结三种ASP.Net中上传文件的方法

ASP.Net的WebForm开发模式中,封装了FileUpload控件,可以方便的进行文件上传操作.但有时,你可能不希望使用ASP.Net中的服务器控件,仅仅使用Input标签来实现文件上传.当然也是可以的.下面总结在项目中使用过的上传文件的方式. 本文我们总结了三种ASP.Net中上传文件的方法. 一.使用Asp.Net中的FileUpload服务器端控件实现上传 使用asp.net中的服务器端控件FileUpload上传文件非常方便.FileUpload对上传操作进行了封装,你只需要调用S

js 上传文件预览的简单实例_javascript技巧

1. FILE API html5提供了FIle和FileReader两个方法,可以读取文件信息并读取文件. 2. example <html> <body> <div id="test-image-preview" style="border: 1px solid rgb(204, 204, 204); width: 100%; height: 200px; background-size: contain; background-repeat

ASP.net中上传文件的操作

asp.net|上传 作者:abigfrog(千年精灵)(★JAVA★) <一>.选择本地要上传到服务器的文件 首先要感谢ASP.NET的强大功能,他提供的HTML控制元件,使得我们很容易的通过一个对话框来选择要上传的文件.当然你的浏览器也必须是IE 3.02 或者Netscape 3.0版本或者比这二者版本高的浏览器.通过下列语句就可以完成选择本地一个文件的工作: <input id = " loFile " type = " file " ru

在PHP.MVC中上传文件

PHP.MVC官方网站上介绍的是使用PEAR::HTTP_Upload 包来处理上传,而我只是用原始的方式来进行上传的处理,主要是为了说明在MVC的框架中怎样上传文件.以后我可能会使用PEAR::HTTP_Upload 包来做. 1.打开phpmvc-config.xml,在<phpmvc-config>标签中加上: <controller maxFileSize="1048576" tempDir="C:\www\upload\"><

ASP.NET中上传文件到数据库

asp.net|上传|数据|数据库 介绍 为什么要将文件保存到数据库呢?理由很多,最直接的就是,将文件放入数据库以后,可以对文件进行更好的管理,特别是文本文件.图片等,如果不使用数据库,数量巨大的时候,很难做到有效的管理和区别.特别是需要作一些与文字密切相关的应用的时候,将文件全部放入数据库是最好的选择,对文字的处理.检索等,都可以直接利用数据库的一些功能,可以做到真正的有效管理.本文举例主要针对以文字为基础的文件,比如WORD等,但是,实际上对程序稍微修改,就可以上传所有文件类型. 数据表结构