`

PHP > 文件 上传

    博客分类:
  • php
 
阅读更多

通过 PHP,可以把文件上传到服务器。

创建一个文件上传表单

允许用户从表单上传文件是非常有用的。

请看下面这个供上传文件的 HTML 表单:

<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>

请留意如下有关此表单的信息:

<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。

<input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

创建上传脚本

"upload_file.php" 文件含有供上传文件的代码:

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
?>

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:

  • $_FILES["file"]["name"] - 被上传文件的名称
  • $_FILES["file"]["type"] - 被上传文件的类型
  • $_FILES["file"]["size"] - 被上传文件的大小,以字节计
  • $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
  • $_FILES["file"]["error"] - 由文件上传导致的错误代码

这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

上传限制

在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:

<?php

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
  }
else
  {
  echo "Invalid file";
  }

?>

注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。

保存被上传的文件

上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。

这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。

注释:这个例子把文件保存到了名为 "upload" 的新文件夹。

分享到:
评论

相关推荐

    php大文件上传

    在PHP开发中,大文件上传是一项常见的需求,尤其是在多媒体内容分享、文件共享或者云存储服务等场景下。然而,PHP默认设置对大文件上传有限制,可能会导致上传失败或者超时。本案例将探讨如何通过PHP实现大文件的...

    php文件上传源码

    PHP文件上传源码主要涉及以下几个关键知识点: 1. **表单设计**:在HTML中,我们需要一个`&lt;form&gt;`元素来允许用户选择要上传的文件。关键属性包括`enctype="multipart/form-data"`(用于文件上传)和`method="post"`...

    php大文件上传例子及说明

    2. **后端处理**:在PHP文件(如`upload.php`)中,通过`$_FILES`全局数组获取上传文件的信息。 ```php if(isset($_POST["submit"])) { $file = $_FILES["fileToUpload"]; // 进一步处理文件... } ``` 3. **验证...

    PHP文件上传类

    以下是对"PHP文件上传类"的详细解析: 1. **类的结构**: - 一个PHP文件上传类通常包含一系列的方法,如`upload()`用于执行实际的文件上传操作,`checkFileSize()`用于检查文件大小,`checkFileType()`用于验证...

    php大文件上传,百兆文件上传,有进度条,有上传速度

    php大文件上传,百兆文件上传,有进度条,有上传速度 之前发布一个大文件上传,但是问题太多,此版本相对上一个稳定得多 1,将压缩包里的 php_uploadprogress.dll 文件复制到你的PHP 安装目录里的扩展库文件夹 ...

    php文件上传插件(简洁好用的上传插件)

    本插件是一款简洁而实用的PHP文件上传解决方案,旨在帮助开发者快速集成文件上传功能,提升用户体验。下面将详细介绍这款插件的核心特性、使用方法以及相关知识点。 1. **核心特性** - **易用性**:这款插件设计...

    PHP文件上传和页面展示

    本教程将通过WAMP(Windows、Apache、MySQL、PHP)集成环境和PHPStorm IDE,来讲解如何实现PHP文件上传,并在HTML页面上展示上传的图片。 首先,我们需要创建一个HTML表单用于用户选择要上传的文件。在HTML代码中,...

    php实现文件上传并返回获得上传后文件名

    在PHP中实现文件上传是一项常见的任务,这通常涉及到用户通过Web...总的来说,PHP文件上传涉及了HTML表单、POST请求、PHP脚本处理和文件系统操作。理解这些概念对于构建任何涉及用户上传文件的Web应用程序至关重要。

    php版仿网易文件上传控件

    本文将详述“php版仿网易文件上传控件”的核心知识点,帮助开发者理解和实现类似的功能。 首先,我们要理解文件上传在Web应用中的作用。文件上传功能允许用户通过浏览器将本地计算机上的文件发送到服务器,这在数据...

    ajax PHP 大文件上传

    **二、PHP文件上传基础** 在PHP中,文件上传是通过HTTP协议的POST方法完成的,主要涉及到`$_FILES`全局数组,它包含了上传文件的相关信息,如文件名、类型、大小、临时路径等。要接收上传文件,PHP脚本必须包含`...

    php + flash 大文件 上传显示进度

    在IT行业中,PHP和Flash是两个重要的技术领域,它们经常被用来处理大文件上传和显示上传进度的问题。这里,我们将详细探讨如何利用PHP和Flash来实现这个功能。 首先,PHP作为服务器端脚本语言,主要负责接收、处理...

    PHP多文件上传插件,PHP+jQuery+Ajax多图片上传

    在PHP开发中,多文件上传是一项常见的功能,尤其在处理用户提交的图片或者文档时。本插件结合了PHP、jQuery和Ajax技术,提供了一种高效、用户友好的多图片上传解决方案。通过Ajax异步传输,用户可以在不刷新页面的...

    php实现多文件上传

    在PHP中实现多文件上传是一项常见的任务,尤其在开发web应用程序时。这个功能允许用户一次选择并上传多个文件,如图片、文档等。以下是对如何实现这一功能的详细讲解: 一、HTML表单设计 首先,你需要在HTML页面中...

    文件上传php代码

    在PHP中,文件上传是一项常见的任务,特别是在构建网站或应用程序时,用户可能需要上传图片、文档或其他类型的文件。本文将详细讲解如何实现一个真正的文件上传功能,而不是将文件暂存到服务器的缓存中。 首先,...

    php实现文件上传

    本篇文章将深入探讨PHP文件上传的原理和实现步骤,以及如何实现图片预览。 首先,我们需要了解HTTP协议在文件上传中的作用。在Web表单提交时,如果设置了`enctype="multipart/form-data"`,浏览器会将表单数据分割...

    php文件上传系统

    本项目名为“php文件上传系统”,显然是一个利用PHP实现的文件上传功能模块,结合MySQL数据库进行数据管理。 在PHP中,文件上传主要依赖于HTTP协议的multipart/form-data编码类型。用户在HTML表单中使用`...

    php实现大文件上传带进度条

    传统的PHP文件上传机制对文件大小有限制,不适用于大型文件,如百兆视频。为了解决这个问题,我们可以利用PHP的Alternative PHP Cache (APC) 扩展,它提供了一种处理大文件上传并显示进度条的方法。 首先,我们需要...

    PHP文件上传和下载

    在PHP中,文件上传和下载是两个非常重要的功能,它们在Web开发中有着广泛的应用,例如用户上传头像、分享文件或下载资源等。本文将详细介绍如何使用PHP实现这两个功能。 首先,我们从文件上传开始。PHP提供了`$_...

    delphi上传文件到php网站

    `Unit1.dfm`是表单设计文件,`Project1.dpr`是项目的主程序文件,`Unit1.pas`是源代码文件,`Project1.res`包含资源信息,`Project1.exe`是最终的可执行文件,`php`可能是与文件上传相关的PHP代码片段。这些文件反映...

    php-upload封装类上传文件,多单文件上传.zip

    本压缩包“php-upload封装类上传文件,多单文件上传.zip”提供了一个完整的PHP文件上传解决方案,包括单文件和多文件上传功能,并附带了演示示例。 核心知识点: 1. **PHP文件上传原理**:PHP通过`$_FILES`全局变量...

Global site tag (gtag.js) - Google Analytics