代码示例
成都创新互联公司主要从事成都网站设计、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务襄阳,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
upload.htm
form enctype="multipart/form-data" action="upload.php" method="post"
input type="hidden" name="max_file_size" value="100000"
文件名:input name="filename"br
文件:input name="userfile" type="file"br
input type="submit" value="上传文件"
/form
upload.php
?
copy($userfile,$_POST['filename']);
echo $userfile."-用户上传到服务器上的文件临时存放的名称br";
echo $userfile_name."-在用户机器上该文件的原始名称br";
echo $userfile_size."-上传文件的实际字节数br";
echo $userfile_type."-如果用户的浏览器提供了这个信息的话,它表示mime的类型。例如image/gifbr";
?
a href="upload.htm"继续上传/a
很简单,关键的只有一句copy就搞定了,存入数据库嘛,也很简单。
你都不说是啥子数据库。唉!其实光要代码在我以前的论坛中都是不允许的。
我给你个简单的吧 这个可以实现三个一起上传 这个是我自己用的 做了点调整
uploadCore.php 页面代码
?php
/*
* @(#)UploadFile.php (beta) 2005/2/19
*
* exBlog上传附件类,可同时处理用户多个上传文件。效验文件有效性后存储至指定目录。
* 可返回上传文件的相关有用信息供其它程序使用。(如文件名、类型、大小、保存路径)
* 使用方法请见本类底部(UploadFile类使用注释)信息。
*/
class UploadFile {
var $user_post_file = array(); //用户上传的文件
var $user_name_u = array();//username
//var $user_name_y = array(); //usertype
var $save_file_path; //存放用户上传文件的路径
var $max_file_size; //文件最大尺寸
var $last_error; //记录最后一次出错信息
//默认允许用户上传的文件类型
var $allow_type = array('gif', 'jpg', 'png', 'zip', 'rar', 'txt', 'doc', 'pdf');
var $final_file_path; //最终保存的文件名
var $save_info = array(); //返回一组有用信息,用于提示用户。
/**
* 构造函数,用与初始化相关信息,用户待上传文件、存储路径等
*
* @param Array $file 用户上传的文件
* @param String $path 存储用户上传文件的路径
* @param Integer $size 允许用户上传文件的大小(字节)
* @param Array $type 此数组中存放允计用户上传的文件类型
*/
function UploadFile($file, $uname, $path, $size = 2097152, $type = '') {
$this-user_name_u = $uname;
//$this-user_name_y = $utype;
$this-user_post_file = $file;
$this-save_file_path = $path;
$this-max_file_size = $size; //如果用户不填写文件大小,则默认为2M.
if ($type != '')
$this-allow_type = $type;
}
/**
* 存储用户上传文件,检验合法性通过后,存储至指定位置。
* @access public
* @return int 值为0时上传失败,非0表示上传成功的个数。
*/
function upload() {
for ($i = 0; $i count($this-user_post_file['name']); $i++) {
//如果当前文件上传功能,则执行下一步。
if ($this-user_post_file['error'][$i] == 0) {
//取当前文件名、临时文件名、大小、扩展名,后面将用到。
$userty = $this-user_name_y[$i];
$uuname = $this-user_name_u[$i];
$name = $this-user_post_file['name'][$i];
$tmpname = $this-user_post_file['tmp_name'][$i];
$size = $this-user_post_file['size'][$i];
$mime_type = $this-user_post_file['type'][$i];
$type = $this-getFileExt($this-user_post_file['name'][$i]);
//检测当前上传文件大小是否合法。
if (!$this-checkSize($size)) {
$this-last_error = "这个文件的大小太大了. 您上传的文件名: ".$name;
$this-halt($this-last_error);
continue;
}
//检测当前上传文件扩展名是否合法。
if (!$this-checkuplod($type)) {
$this-last_error = "允许上传文件类型: .".$type." 您上传的文件名: ".$name;
$this-halt($this-last_error);
continue;
}
//检测当前上传文件是否非法提交。
if(!is_uploaded_file($tmpname)) {
$this-last_error = "文件非法提交. 您上传的文件名: ".$name;
$this-halt($this-last_error);
continue;
}
//移动文件后,重命名文件用。
$basename = $this-getBaseName($name, ".".$type);
//移动后的文件名
$saveas = $basename."-".time().".".$type;
//$saveas = $basename.".".$type;
//组合新文件名再存到指定目录下,格式:存储路径 + 文件名 + 时间 + 扩展名
$this-final_file_path = $this-save_file_path."/".$saveas;
if(!move_uploaded_file($tmpname, $this-final_file_path)) {
$this-last_error = $this-user_post_file['error'][$i];
$this-halt($this-last_error);
continue;
}
//存储当前文件的有关信息,以便其它程序调用。
$this-save_info[] = array("uname" = $uuname,"name" = $name, "type" = $type,
"mime_type" = $mime_type,
"size" = $size, "saveas" = $saveas,
"path" = $this-final_file_path);
}
}
return count($this-save_info); //返回上传成功的文件数目
}
/**
* 返回一些有用的信息,以便用于其它地方。
* @access public
* @return Array 返回最终保存的路径
*/
function getSaveInfo() {
return $this-save_info;
}
/**
* 检测用户提交文件大小是否合法
* @param Integer $size 用户上传文件的大小
* @access private
* @return boolean 如果为true说明大小合法,反之不合法
*/
function checkSize($size) {
if ($size $this-max_file_size) {
return false;
}
else {
return true;
}
}
/**
* 检测用户提交文件类型是否合法
* @access private
* @return boolean 如果为true说明类型合法,反之不合法
*/
function checkType($extension) {
foreach ($this-allow_type as $type) {
//echo "pre";
//print_r($type);
//print_r($extension);
$str=substr($extension['name'][0],strrpos($extension['name'][0],'.')+1);
//echo $str;
//exit();
if (strcasecmp($str, $type) == 0)
return true;
}
return false;
}
function checkuplod($extension) {
foreach ($this-allow_type as $type) {
//echo "pre";
//print_r($type);
//print_r($extension);
//$str=substr($extension['name'][0],strrpos($extension['name'][0],'.')+1);
//echo $str;
//exit();
if (strcasecmp($extension, $type) == 0)
return true;
}
return false;
}
/**
* 显示出错信息
* @param $msg 要显示的出错信息
* @access private
*/
function halt($msg) {
printf("bUploadFile Error:/b %s br\n", $msg);
exit();
}
/**
* 取文件扩展名
* @param String $filename 给定要取扩展名的文件
* @access private
* @return String 返回给定文件扩展名
*/
function getFileExt($filename) {
$stuff = pathinfo($filename);
return $stuff['extension'];
}
/**
* 取给定文件文件名,不包括扩展名。
* eg: getBaseName("j:/hexuzhong.jpg"); //返回 hexuzhong
*
* @param String $filename 给定要取文件名的文件
* @access private
* @return String 返回文件名
*/
function getBaseName($filename, $type) {
$basename = basename($filename, $type);
return $basename;
}
}
?
调用和使用方法
$tmp=$Form;
require ('uploadCore.php');
//设置允许用户上传的文件类型。
$type = array('gif', 'jpg', 'png', 'zip', 'rar', 'txt');
//实例化上传类,第一个参数为用户上传的文件组、第二个参数为存储路径、
//第三个参数为文件最大大小。如果不填则默认为2M
//第四个参数为充许用户上传的类型数组。如果不填则默认为gif, jpg, png, zip, rar, txt, doc, pdf
$upload = new UploadFile($user_upload_file,$user_name, $pathy, 500000, $type);
//print"pre";
//print_r($upload);
//上传用户文件,返回int值,为上传成功的文件个数。
$num = $upload-upload();
if ($num != 0) {
//echo "上传成功br";
$jeff_upload_info=$upload-getSaveInfo();
//取得文件的有关信息,文件名、类型、大小、路径。用print_r()打印出来。
//print_r($jeff_upload_info['uname']);
//print"pre";
//print_r($jeff_upload_info);
//exit();
//格式为: Array
// (
// [0] = Array(
// [name] = example.txt
// [type] = txt
// [size] = 526
// [path] = j:/tmp/example-1108898806.txt
// )
// )
//获得文件保存路径或者其他的信息
for ($jeff_upload_success_num = 0; $jeff_upload_success_num $num; $jeff_upload_success_num++)
{
$tmp['zz_upload_file'] = $jeff_upload_info[$jeff_upload_success_num]['uname'];
$tmp['zz_user_name'] = $jeff_upload_info[$jeff_upload_success_num]['name'];
$tmp['zz_user_uname'] = $jeff_upload_info[$jeff_upload_success_num]['saveas'];
$tmp['zz_size'] = $jeff_upload_info[$jeff_upload_success_num]['size'];
$tmp['zz_addtime'] = date("Y-m-d");
$tmp['zz_passtime'] = date("Y-m-d");
//print"pre";
//print_r($tmp);
$q_sql = data_insert($tmp,'hczb_zzwd');//插入数据库类
//print_r($q_sql);
//$jeff_upload_success_url = "\r\n".''.$jeff_upload_info[$jeff_upload_success_num]['path'].'[/img]';
//$jeff_upload_success_img .= $jeff_upload_success_url; //获得代码
}
if($q_sql)
{
echo "scriptwindow.location.href='third.php';/script";
$_SESSION['f'] = 3;
}
else
{
echo "scriptalert('sorry,操作失败');window.location.href='third.php';/script";;
}
//echo $num."个文件上传成功";
}
else {
echo "scriptalert('sorry,上传失败,允许上传的格式是:'".$type."'');window.location.href='third.php';/script";
}
表单调用:
table width="91%" border="0" align="center" cellpadding="0" cellspacing="0" style="margin-top:12px;"
tr
td valign="top" fieldset
legendimg src="images/third_11.jpg" //legend
table width="98%" border="0" cellspacing="0" cellpadding="0" style="margin-top:12px;" align="center"
tr
td class="tianjie"table width="100%" border="0" cellspacing="0" cellpadding="0"
tr
td width="16%" align="center"附件序号 /td
td width="34%" align="center"附件名称 /td
td width="43%" align="center"附件说明/td
td width="7%" align="center" /td
/tr
/table
table width="100%" border="0" cellspacing="0" cellpadding="0"
tr
td width="16%" align="center"附件一 /td
td width="38%" align="center"input name="user_upload_file[]" type="file" class="bg" id="filename" size="16" //td
td width="43%" align="center"table width="100%" border="0" cellspacing="0" cellpadding="0"
tr
td width="10" align="right"img src="images/input_l.gif" width="6" height="28" //td
td width="120"
input name="user_name[]" type="text" id="user_name" class="srk" size="35" onchange="clear_errors(document.all.dis_error_user_name,this);"/ /td
td width="9" align="left"img src="images/input_r.gif" width="5" height="28" //td
/tr
/table/td
td width="3%" align="center" /td
/tr
/table
table width="100%" border="0" cellspacing="0" cellpadding="0" class="lx"
tr
td width="16%" align="center"附件二 /td
td width="38%" align="center"input name="user_upload_file[]" type="file" class="bg" id="filename" size="16" //td
td width="43%" align="center"table width="100%" border="0" cellspacing="0" cellpadding="0"
tr
td width="10" align="right"img src="images/input_l.gif" width="6" height="28" //td
td width="120"
input name="user_name[]" type="text" id="user_name1" class="srk" size="35" onchange="clear_errors(document.all.dis_error_user_nameo,this);"/ /td
td width="9" align="left"img src="images/input_r.gif" width="5" height="28" //td
/tr
/table/td
td width="3%" align="center" /td
/tr
/table
table width="100%" border="0" cellspacing="0" cellpadding="0"
tr
td width="16%" align="center"附件三 /td
td width="38%" align="center"input name="user_upload_file[]" type="file" class="bg" id="filename" size="16" //td
td width="43%" align="center"table width="100%" border="0" cellspacing="0" cellpadding="0"
tr
td width="10" align="right"img src="images/input_l.gif" width="6" height="28" //td
td width="120"
input name="user_name[]" type="text" id="user_name2" class="srk" size="35" onchange="clear_errors(document.all.dis_error_user_namet,this);"/ /td
td width="9" align="left"img src="images/input_r.gif" width="5" height="28" //td
/tr
/table/td
td width="3%" align="center" /td
/tr
/table
table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin:15px;"
tr
td align="center"input type="submit" name="sub" value=" " style="border:0px; width:166px; height:28px; background:url(images/third_19.jpg) no-repeat; cursor:hand" //td
/tr
/table
/td
/tr
/table
/fieldset/td
/tr
/table
有哪里不明白的 M我 告诉你
下面是一个简单的php上传图片到服务器图片名存入数据库的例子。因为我的机子上没有装mysql所以没有测试。但是如果出现问题只要小改动应该就可以了。同时这只是基本的上传示例,所以功能也并不完善。存入数据库的是文件名。而不是完整的http地址。这样子方便网站整体移动。
?
$db = mysql_connect("127.0.0.1", "huoreee","lljghkg");//连接mysql数据库,地址,用户名,密码
mysql_query("SET NAMES 'GBK'");//中文乱码解决
mysql_select_db("mydata",$db);//选择数据库名称
if($_POST[['filename']""){
copy($userfile,$_POST['filename']); //上传图片服务器当前文件所在文件夹
$exec="insert into imagedata (i_name) value('".$_POST['filename']."')";//sql添加语句,添加图片名到数据库
mysql_query($exec);//执行添加sql操作
header("Location: 这个网页地址/名");//改一下,添加成功转回本页
}else{
header("Location: 这个网页地址/名");//改一个,添加不成功转回本页
}
?
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""
html xmlns=""
head
meta http-equiv="Content-Type" content="text/html; charset=gb2312" /
title无标题文档/title
/head
body
form enctype="multipart/form-data" action="upload.php" method="post"
input type="hidden" name="max_file_size" value="100000"
文件名:input name="filename"br
文件:input name="userfile" type="file"br
input type="submit" value="上传文件"
/form
/body
/html