search
HomeBackend DevelopmentPHP Tutorial用PHP实现文件上传_PHP
用PHP实现文件上传_PHPJun 01, 2016 pm 12:25 PM
fileuploadCanaccomplishusdocumentuser

在WebDev站点上经常看到的一个问题是关于文件上传的。在这篇文章里我将解释如何用PHP实现文件
上传。 设计上传表格

  我们主要的目标是完成文件从本地计算机上传到服务器上去。为了做到这一点,我们需要做一个表
格,允许用户选择一个文件并可以提交它。下面是一个例子:



文件上传表格



ACTION=submit.php3
METHOD="POST">


选择上传文件 TYPE="File">
TYPE="submit">




  注意表格中的ENCTYPE="multipart/form-data"部分。这个一定不能错,否则服务器将不知道你在上
传文件。

设计上传程序

  现在我们已经完成了前台部分,让我们再仔细地考虑后台是如何接收文件并保存它到我们指定的目
录下去。下面就开始用PHP了。这是submit.php3的程序:


If($MyFile != "none") {
copy($MyFile,"/home/berber/$MyFile_name");
unlink($MyFile);
}
else {
echo"你没有上传任何文?;
}
?>

  不管你信不信,这就是整个处理过程。我们在程序中所做的就是:

  1. 检查是否一个文件已经上传到服务器,通过If($MyFile != "none");
  2. 拷贝文件到指定位置。
  3. 删除临时文件。

  当你按下了提交按钮后,文件将会从你的计算机上传到服务器的临时目录下。在临时目录下的文件
名为一个临时文件。应该使用file字段的name值来访问它,在这里为$MyFile。真正的文件名使用file
字段的name值加上"_name"来访问它,在这里为$MyFile_name。使用copy()函数,将临时文件$MyFile拷
贝到指定目录下,拷贝后的文件名为$MyFile_name。完成后不要忘了删除临时文件,不然你会有许多你
不想要的文件。

设置文件名

  一个可能让程序员睡不着觉的事情就是试图改变file字段的VALUE属性的值。并不是很多人知道它
是不可能的。尽管W3C说可以,但实际上,象IE和Netscape都不允许设置VAUE属性的值。听上去有点可
笑,为什么我不能设置一个初始值,这样让用户使用起来更方便呢?如果你那样做,那你就会发现你带
来了一个安全上的漏洞。可以设想一下,你登录到我的网站,我可以改变一个表格中的file字段的值。
那么有许能阻止我把你的/etc/passwd文件上传呢?更进一步的,我不需要你按下提交按钮,我可先设
置file字段的值,然后通过一段JavaScript程序来模拟提交动作...哇呜...我可以处理你机器上的任何
文件了。因为这个原因,浏览器简单地把标记中的file字段的VALUE字段给忽略了。

限制文件大小

  另一个酷的特性是限制上传文件的大小选项。只要增加一个标记就可以了:



  这个将不允许用户上传超过100KB的文件。

显示文件大小

  为了显示文件大小,可以通过file字段name属性值加上"_size"这个变量来访问。在我们的例子中
就是使用$MyFile_size。所以,如果你想告诉用户上传文件的大小,你可以象下面那样去做:

echo "You have just uploaded $MyFile_name";
echo "The size of the file is $MyFile_size";

权限

  很明显你需要对目标目录的写的权限。如果一个用户用匿文上传文件,那他的用户名应该是
"bobody"。这个用户必须有对目标目录写的权限否则你可能得到一个象下面的信息:

Warning: Unable to create '/home/berber/berber.txt':
Permission denied
in /home/berber/submit.php3 on line 5
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
wpsystem是什么文件夹wpsystem是什么文件夹Sep 01, 2022 am 11:22 AM

wpsystem文件夹是windows应用文件夹;创建WpSystem文件夹是为了存储某些特定“Microsoft Store”应用程序的数据,因此建议不要删该文件夹,因为删除之后就无法使用指定的应用。

winreagent是什么文件夹winreagent是什么文件夹Aug 26, 2022 am 11:23 AM

winreagent是在系统更新或升级的过程中创建的文件夹;该文件夹中通常包含临时文件,当更新或升级失败时,系统将通过还原先前创建的临时文件来回滚到执行更新或升级过程之前的版本。

baidunetdiskdownload是什么文件夹baidunetdiskdownload是什么文件夹Aug 30, 2022 am 10:45 AM

baidunetdiskdownload是百度网盘默认下载文件的文件夹;百度网盘是百度推出的一项云存储服务,只要下载东西到百度网盘里,都会默认保存到这个文件夹中,并且可跨终端随时随地查看和分享。

usmt.ppkg是什么文件usmt.ppkg是什么文件Sep 09, 2022 pm 02:14 PM

“usmt.ppkg”是windows自带的系统还原功能的系统备份文件;Windows系统还原是在不需要重新安装操作系统,也不会破坏数据文件的前提下使系统回到原有的工作状态,PBR恢复功能的备份文件就是“usmt.ppkg”。

如何在FastAPI中实现文件上传和处理如何在FastAPI中实现文件上传和处理Jul 28, 2023 pm 03:01 PM

如何在FastAPI中实现文件上传和处理FastAPI是一个现代化的高性能Web框架,简单易用且功能强大,它提供了原生支持文件上传和处理的功能。在本文中,我们将学习如何在FastAPI框架中实现文件上传和处理的功能,并提供代码示例来说明具体的实现步骤。首先,我们需要导入需要的库和模块:fromfastapiimportFastAPI,UploadF

备份文件的扩展名通常是什么备份文件的扩展名通常是什么Sep 01, 2022 pm 03:55 PM

备份文件的扩展名通常是“.bak”;bak文件是一个备份文件,这类文件一般在'.bak前面加上应该有原来的扩展名,有的则是由原文件的后缀名和bak混合而成,在生成了某种类型的文件后,就会自动生成它的备份文件。

酷狗上传自己的音乐的简单步骤酷狗上传自己的音乐的简单步骤Mar 25, 2024 pm 10:56 PM

1、打开酷狗音乐,点击个人头像。2、点击右上角设置的图标。3、点击【上传音乐作品】。4、点击【上传作品】。5、选择歌曲,然后点击【下一步】。6、最后点击【上传】即可。

thm是什么格式的文件thm是什么格式的文件Sep 09, 2022 pm 02:18 PM

thm是MP4或者MPG视频格式文件的索引文件,其本质上是一张jpg格式的图片;打开视频播放器除了需要MP4或者MPG格式的视频文件外,还会需要一个thm格式的索引文件才能播放,该文件可以用ACDSEE打开查看。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor