用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 相关文章推荐
php5.3 废弃函数小结
May 16 PHP
drupal 代码实现URL重写
May 04 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
php define的第二个参数使用方法
Nov 04 PHP
php实现监听事件
Nov 06 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
PHP输入输出流学习笔记
May 12 PHP
php轻量级的性能分析工具xhprof的安装使用
Aug 12 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
精通php的十大要点(上)
2009/02/04 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
php调用c接口无错版介绍
2014/03/11 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
编写React组件项目实践分析
2018/03/04 Javascript
webpack-mvc 传统多页面组件化开发详解
2019/05/07 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
Python requests库用法实例详解
2018/08/14 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
英国著名药妆店:Superdrug
2021/02/13 全球购物
基层党支部整改方案
2014/10/25 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技