文件上传
PHP 脚本允许用户使用 HTML 格式上传文件到服务器上。最初的文件被上传到一个临时目录中,随后 PHP 脚本将其转移到最终目录中。
在 phpinfo.php 页面中信息描述用于文件上传的临时目录为 upload_tmp_dir,并且允许最大上传文件为upload_max_filesize。这些参数被设置在 PHP 配置文件 PHP.ini 中
上传文件步骤如下:
- 用户打开页面,其中包含 HTML 文本文件表单,浏览按钮和提交按钮。
- 用户单击浏览按钮并从本地电脑上选择文件上传。
- 选中文件的完整路径出现在文本框中,然后单击提交按钮。
- 所选文件被发送到服务器上的临时目录中。
- 指定为形式的 PHP 脚本处理程序在表单的动作属性检查文件已经到达后,然后将文件复制到目标目录中。
- PHP 脚本确认上传成功。
通常,在临时和最终的位置中,写入文件设置权限为允许是很有必要的。如果被设置为只读那么过程将会失败
一个上传文件可以是一个文本文件或图像文件或任何其他文档。
创建上传表单
下面 HTML 代码创建了一个上传表单。这种表单属性设置为 post,enctype属性设置为 multipart/from-data
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<html> <head> <title>File Uploading Form</title> </head> <body> <h3>File Upload:</h3> Select a file to upload: <br /> <form action="/php/file_uploader.php" method="post" enctype="multipart/form-data"> <input type="file" name="file" size="50" /> <br /> <input type="submit" value="Upload File" /> </form> </body> </html> |
创建一个上传脚本
有一个全局 PHP 变量名为 $_FILES。这个变量是二维数组,保留了所有上传文件的相关信息。因此,如果分配给在上传表单输入值的名称 File,那么 PHP 将创建 5 个变量:
- $_FILES[‘file’][‘tmp_name’]-——上传文件在 web 服务器上的临时目录。
- $_FILES[‘file’][‘name’]——上传文件的真实名称。
- $_FILES[‘file’][‘size’]——上传文件的大小以字节为单位。
- $_FILES[‘file’][‘type’]——上传文件的 MIME 类型。
- $_FILES[‘file’][‘error’]——与此文件上传相关的错误代码。
下面例子中脚本试图复制一个在前一节中列出 HTML 表单上传的文件到 /var/www/html
目录中,这是 PHP 服务器文档的根目录,在完成后它会显示所有文件的细节。请注意,如果您要显示上传文件不要使用二进制文件如图片或 Word 文档。
这里的代码 uploader.php 脚本将处理上传的文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php if( $_FILES['file']['name'] != "" ) { copy( $_FILES['file']['name'], "/var/www/html" ) or die( "Could not copy file!"); } else { die("No file specified!"); } ?> <html> <head> <title>Uploading Complete</title> </head> <body> <h2>Uploaded File Info:</h2> <ul> <li>Sent file: <?php echo $_FILES['file']['name']; ?> <li>File size: <?php echo $_FILES['file']['size']; ?> bytes <li>File type: <?php echo $_FILES['file']['type']; ?> </ul> </body> </html> |
当你将使用表单上传和脚本上传文件时,显示结果如下:
1 2 3 4 5 |
Uploaded File Info: Sent file: uploadedfile.txt File size: 2003 bytes File type: image/jpg |
你自己在网络服务器上尝试上述例子后,如果您有任何问题,请发到论坛上将得到进一步的帮助。
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!