用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的库,结果发现很多东西
Dec 31 PHP
php实现mysql同步的实现方法
Oct 21 PHP
利用PHP实现智能文件类型检测的实现代码
Aug 02 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
基于JQuery+PHP编写砸金蛋中奖程序
Sep 08 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
Mar 18 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
WHOOPS PHP调试库的使用
Sep 29 PHP
php unlink()函数使用教程
Jul 12 PHP
PHP调用全国天气预报数据接口查询天气示例
Feb 20 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
Oct 03 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
用PHP实现维护文件代码
2007/06/14 PHP
php通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
js动态切换图片的方法
2015/01/20 Javascript
React组件的三种写法总结
2017/01/12 Javascript
package.json文件配置详解
2017/06/15 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
python图书管理系统
2020/04/05 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
硕士研究生个人求职信
2013/12/04 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
公司建议书怎么写
2014/05/15 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
观看焦裕禄观后感
2015/06/09 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
golang中字符串MD5生成方式总结
2021/07/04 Golang
Python中time与datetime模块使用方法详解
2022/03/31 Python
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL