用PHP实现文件上传二法


Posted in PHP onOctober 09, 2006

PHP(Hypertext Preprocessor)是一种 HTML 内嵌式的语言 (类似 IIS上的ASP)。而 PHP 独特的语法混合了 C、Java、Perl 以及 PHP 式的新语法。它可以比 CGI 或者 Perl更快速的执行动态网页。除此之外,用 PHP 写出来的 Web 后端CGI 程序,可以很轻易的移植到不同的系统平台上。

我们在做网站时,需要访问者的参于才能将网站建设得更加引人注目,这就要求我们从访问者那里得到文章、图片等。因此,文件上传成为网页中必不可少的功能。现在我就利用现在流行的编程语言PHP,用两种方法来说明其功能的实现。

一、利用php的文件函数来实现上传
这段代码分为两个文件,一个为upload.html,一个是upload.php。

上传文件选择:upload.html 代码如下:

<html><head><title>上载文件表单</title></head>

<body>

<form enctype="multipart/form-data" action="upload.php" method="post">

<input type="hidden" name="max_file_size" value="100000">

<center>请选择文件:

<input name="userfile" type="file">

<input type="submit" value="上传文件">

</center>

</form>

</body>

</html>

*** 说明 ***

1、请注意<form enctype="multipart/form-data"……>这是一个标签,我们要实现文件的上传,必须指定为multipart/form-data ,否则服务器将不知道你在干什么!

2、值得注意的是文件upload.html中表单选项 MAX_FILE_SIZE 的隐藏值域,通过设置

其Value(值)可以限制上载文件的大小。

处理刚刚上传的文件:upload.php 代码如下:

<html>

<head>

<title>处理上载文件</title>

</head>

<body>

<?

copy($userfile,"newfile");

echo $userfile."-用户上传到服务器上的文件临时存放的名称<br>";

echo $userfile_name."-在用户机器上该文件的原始名称<br>";

echo $userfile_size."-上传文件的实际字节数<br>";

echo $userfile_type."-如果用户的浏览器提供了这个信息的话,它表示mime的类型。例如image/gif<br>";

?>

</body>

</html>

*** 说明 ***

1、使用了PHP文件函数copy()将上载到临时目录下的文件拷贝到一个特定的目录下,并重新命名为"newfile"。

2、在upload.html中定义了一个变量userfile,在upload.php中,我们就可以使用这个变量,直接通过$userfile访问上载的文件,但由于这是一个保存文件的变量,因此文件名字必须通过另外一个$userfile_name变量取得。

下面是这个变量的具体用法:

$userfile:在将要存放上载文件的服务器上的临时文件名字。

$userfile_name:在发送者系统中的初始文件名。

$userfile_size:按字节计算的上载文件的大小。

$userfile_type:多用途网际邮件扩充协议类型的文件,前提是浏览器提供这种信息,比如说“image/gif"。

二、利用FTP功能进行文件上传
这段代码同样分为两个文件,一个为upload.php,一个是ftp.php。

设置ftp的相关选项及选择上传文件名:upload.php 代码如下:

<?php

$username="用户名";

$password="用户密码";

$server="主机名";

$cdir="上传目录名" ;

//以上设置你的FTP主机名、用户名和用户密码

?>

<!-- 文件上传设置标签 -->

<form enctype="multipart/form-data" action=ftp.php method=post>

<!-- 传递变量 -->

<input type=hidden name=username value=<? Echo $username; ?>>

<input type=hidden name=password value=<? Echo $password; ?>>

<input type=hidden name=server value=<? Echo $server; ?>>

<input type=hidden name=cdir value=<? Echo $cdir; ?>>

<table>

<tr>

<td>上传文件选择

<input type=file name=upfile>

</td>

</tr>

<tr>

<td>

<!-- 提交表单-->

<input type=submit name=action value=上传>

</td>

</tr>

</table>

</form>

处理上传文件:ftp.php 代码如下:

<?php

//ftp联接主机函数

function connect()

{

global $server, $username, $password;

$conn = ftp_connect($server);

ftp_login($conn, $username, $password);

return $conn;

}

//建立ftp联接

$result = connect();

if ($action == "上传")

{

//用来改变ftp路径

ftp_chdir($result, $cdir);

//用来上传指定的文件,同名并以二进制位传递

$res_code = ftp_put($result, $upfile_name, $upfile, FTP_BINARY);

// 判断是否正确上传

if ($res_code == 1)

echo "上传成功!";

else

echo "上传错误!";

}

// 关闭联接

ftp_quit($result);

?>

*** 说明 ***

函数ftp_put(int ftp_stream, string remote_file, string local_file, int mode)用法

返回值: 布尔值

本函数用来上传指定的文件。参数 ftp_stream 为 FTP 的连接代码。参数 remote_file为欲存在远端的文件名。参数 local_file 为欲上传文件的文件名。参数 mode 的值有 FTP_ASCII 及FTP_BINARY 二种,分别表示文档或者是二进位文件。成功则返回 true 值,失败则返回 false 值。

PHP 相关文章推荐
php数组应用之比较两个时间的相减排序
Aug 18 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
解析php 版获取重定向后的地址(代码)
Jun 26 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
php批量删除cookie的简单实现方法
Jan 26 PHP
php判断并删除空目录及空子目录的方法
Feb 11 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
Yii2 rbac权限控制之菜单menu实例教程
Apr 28 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
May 18 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
PHP安装全攻略:APACHE
Oct 09 #PHP
用PHP生成自己的LOG文件
Oct 09 #PHP
VFP与其他应用程序的集成
Oct 09 #PHP
PHP中在数据库中保存Checkbox数据(1)
Oct 09 #PHP
分页显示Oracle数据库记录的类之二
Oct 09 #PHP
分页显示Oracle数据库记录的类之一
Oct 09 #PHP
在线竞拍系统的PHP实现框架(一)
Oct 09 #PHP
You might like
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
虫族 Zerg 历史背景
2020/03/14 星际争霸
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
JSONP基础知识详解
2017/03/19 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python sys.path详细介绍
2013/10/17 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
python实现发送邮件功能代码
2017/12/14 Python
python使用Matplotlib画条形图
2020/03/25 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
美国精油公司:Plant Therapy
2019/05/17 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
中药专业大学生医药工作求职信
2013/10/25 职场文书
大学生入党群众意见书
2015/06/02 职场文书
幼儿园小班开学寄语(2016秋季)
2015/12/03 职场文书
vue实现简单数据双向绑定
2021/04/28 Vue.js
python中subplot大小的设置步骤
2021/06/28 Python
JS数组方法some、every和find的使用详情
2021/10/05 Javascript