用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 项目的方法
Jan 02 PHP
php ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
php empty函数 使用说明
Aug 10 PHP
检测png图片是否完整的php代码
Sep 06 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
PHP分页详细讲解(有实例)
Oct 30 PHP
ThinkPHP权限认证Auth实例详解
Jul 22 PHP
简单解决新浪SAE无法上传文件的问题
May 13 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
YII动态模型(动态表名)支持分析
Mar 29 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
Feb 15 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 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
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
PHP中串行化用法示例
2016/11/16 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
JavaScript 面向对象的 私有成员和公开成员
2010/05/13 Javascript
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
python实现简单ftp客户端的方法
2015/06/28 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
python 阶乘累加和的实例
2019/02/01 Python
学习和使用python的13个理由
2019/07/30 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
银行柜员应聘推荐信范文
2013/11/24 职场文书
计算机专业毕业生自荐信
2013/12/31 职场文书
银行办理业务介绍信
2014/01/18 职场文书
采购意向书范本
2014/03/31 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
华山导游词
2015/02/03 职场文书
专职安全员岗位职责
2015/04/11 职场文书
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript