设计上传表格
我们主要的目标是完成文件从本地计算机上传到服务器上去。为了做到这一点,我们需要做一个表
格,允许用户选择一个文件并可以提交它。下面是一个例子:
<HTML>
<HEAD>
<TITLE>文件上传表格</TITLE>
</HEAD>
<BODY>
<TABLE>
<FORM ENCTYPE=\"multipart/form-data\" NAME=MyForm
ACTION=submit.php3
METHOD=\"POST\">
<TR><TD>选择上传文件</TD><TD><INPUT NAME=\"MyFile\"
TYPE=\"File\"></TD></TR>
<TR><TD COLSPAN=\"2\"><INPUT NAME=\"submit\" VALUE=\"上传\"
TYPE=\"submit\"></TD></TR>
</TABLE>
</BODY>
</HTML>
注意表格中的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程序来模拟提交动作...哇呜...我可以处理你机器上的任何
文件了。因为这个原因,浏览器简单地把<INPUT>标记中的file字段的VALUE字段给忽略了。
限制文件大小
另一个酷的特性是限制上传文件的大小选项。只要增加一个<INPUT>标记就可以了:
<INPUT TYPE=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"100000\">
这个将不允许用户上传超过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
分享到:
相关推荐
在PHP中实现文件上传是一项常见的任务,特别是在构建Web应用程序时。这一功能允许用户通过网站将文件(如图片、文档等)传输到服务器。本篇文章将深入探讨PHP文件上传的原理和实现步骤,以及如何实现图片预览。 ...
以上就是一个使用PHP和APC扩展实现大文件上传带进度条的基本流程。通过这种方法,我们可以避免一次性加载大文件,分块上传降低了服务器内存压力,同时也提供了良好的用户体验,用户可以看到文件上传的实时进度。需要...
如何用PHP实现文件上载(实例2) 如何用PHP实现网页动态跳转 如何用 PHP 实现文件上传(实例1) 如何用 PHP 文件操作函数 如何用 PHP 在 mySQL 中创建数据库表 如何在PHP发送邮件 如何在PHP中包含或插入文件 如何在 ...
在PHP中实现多文件上传是一项常见的任务,尤其在开发web应用程序时。这个功能允许用户一次选择并上传多个文件,如图片、文档等。以下是对如何实现这一功能的详细讲解: 一、HTML表单设计 首先,你需要在HTML页面中...
PHP实现文件上传PHP实现文件上传PHP实现文件上传PHP实现文件上传PHP实现文件上传PHP实现文件上传PHP实现文件上传PHP实现文件上传PHP实现文件上传PHP实现文件上传PHP实现文件上传PHP实现文件上传PHP实现文件上传PHP...
本文实例讲述了PHP实现通过CURL上传文件功能。分享给大家供大家参考,具体如下: PHP使用CURL上传文件只需发送一个POST请求就可以了,在请求中设置某个字段为需要上传的文件全路径,并且以”@”开头,然后使用CURL把...
在本项目中,"PHP 简单实现文件上传、保存、下载的功能(云盘)",我们主要关注的是如何利用PHP构建一个基本的云存储服务,让用户能够在自己的账户空间内进行文件的操作。以下是对涉及的技术点的详细解释: 1. **PHP*...
Flash结合PHP实现文件上传功能,程序配置说明: 1.php文件路径 upload.fla 文件中第一帧第代码第14行:urlRequest.url = "http://localhost/phpFlash/upload.php"; 此路径改为您的本地环境配置路径,注意,...
在PHP中实现文件上传是一项常见的任务,这通常涉及到用户通过Web表单选择本地文件,然后这些文件被上传到服务器上。下面将详细讲解如何在PHP中实现文件上传,并获取上传后文件的名称。 首先,我们需要创建一个HTML...
本案例将探讨如何通过PHP实现大文件的分块上传,并支持断点续传功能。 首先,理解PHP的文件上传限制至关重要。`php.ini`配置文件中的`post_max_size`和`upload_max_filesize`决定了允许上传文件的最大尺寸。这两个...
在上述例子中,我们展示了如何通过PHP实现文件上传、文件读写的基本操作。这些功能在创建动态网站、处理用户数据、记录日志以及管理配置文件等方面非常实用。通过理解并熟练运用这些技术,开发者可以构建出更加功能...
可以使用`session`或`AJAX`来实现文件上传进度条。 6. **分块上传**:当文件非常大时,可以考虑分块上传。每次只上传文件的一部分,直到整个文件上传完成。这需要更复杂的逻辑,但可以显著改善用户体验。 三、注意...
在JavaScript的世界里,实现文件上传功能是一个常见的需求,尤其是在现代Web应用中。传统的文件上传通常依赖于Flash技术,但随着HTML5的普及,JavaScript已经能够提供原生的、无插件的文件上传解决方案。本教程将...
本文将详细讲解如何使用PHP实现文件上传模块,以及在这个过程中需要注意的关键知识点。 首先,我们需要理解HTTP协议中的文件上传机制。在HTML表单中,我们可以使用`<input type="file">`来创建一个文件选择器,用户...
首先,让我们从文件上传开始。...总之,PHP实现文件上传和下载涉及到HTML表单、PHP处理脚本以及HTTP头的设置。了解这些基本原理后,你可以根据实际项目需求进行扩展和优化,以提供更安全、高效的文件管理服务。
php实现ftp上传文件
在Android应用开发中,有时需要将用户在设备上拍摄或选择的图片文件上传到服务器进行存储、处理或分享。这个过程通常涉及到网络通信,而PHP作为服务器端的脚本语言,常用于处理这些请求。本项目是关于如何利用...
"js+php实现多文件上传"是一个利用JavaScript和PHP技术来实现无插件的Ajax多文件上传方案,主要依赖于名为noSWFUpload的组件。这个组件不依赖于Flash(SWF)或其他浏览器插件,因此具有更广泛的兼容性,可在多种...
为了简化这个过程,开发者通常会编写一个专门的文件上传类,以实现对上传过程的全面控制和错误处理。以下是对"PHP文件上传类"的详细解析: 1. **类的结构**: - 一个PHP文件上传类通常包含一系列的方法,如`upload...
在PHP中实现文件上传涉及到多个步骤和注意事项。首先,我们需要创建一个HTML表单,其中包含一个`<input type="file">`元素,用于用户选择要上传的文件。表单的`enctype`属性应设置为`multipart/form-data`,这是上传...