资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

php+上传数据代码 php图片上传代码

怎样用PHP实现文件上传

创建一个文件上传表单

创新互联成立于2013年,我们提供高端重庆网站建设公司重庆网站制作成都网站设计、网站定制、全网营销推广成都小程序开发、微信公众号开发、seo优化排名服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为服务器托管企业提供源源不断的流量和订单咨询。

允许用户从表单上传文件是非常有用的。

请看下面这个供上传文件的 HTML 表单:

html

body

form action="upload_file.php" method="post"

enctype="multipart/form-data"

label for="file"Filename:/label

input type="file" name="file" id="file" /

br /

input type="submit" name="submit" value="Submit" /

/form

/body

/html

请留意如下有关此表单的信息:

form 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。

input 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

创建上传脚本

"upload_file.php" 文件含有供上传文件的代码:

?php

if ($_FILES["file"]["error"] 0)

{

echo "Error: " . $_FILES["file"]["error"] . "br /";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "br /";

echo "Type: " . $_FILES["file"]["type"] . "br /";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";

echo "Stored in: " . $_FILES["file"]["tmp_name"];

}

?

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:

$_FILES["file"]["name"] - 被上传文件的名称

$_FILES["file"]["type"] - 被上传文件的类型

$_FILES["file"]["size"] - 被上传文件的大小,以字节计

$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称

$_FILES["file"]["error"] - 由文件上传导致的错误代码

这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

上传限制

在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:

?php

if ((($_FILES["file"]["type"] == "image/gif")

|| ($_FILES["file"]["type"] == "image/jpeg")

|| ($_FILES["file"]["type"] == "image/pjpeg"))

($_FILES["file"]["size"] 20000))

{

if ($_FILES["file"]["error"] 0)

{

echo "Error: " . $_FILES["file"]["error"] . "br /";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "br /";

echo "Type: " . $_FILES["file"]["type"] . "br /";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";

echo "Stored in: " . $_FILES["file"]["tmp_name"];

}

}

else

{

echo "Invalid file";

}

?

注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。

保存被上传的文件

上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。

这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:

?php

if ((($_FILES["file"]["type"] == "image/gif")

|| ($_FILES["file"]["type"] == "image/jpeg")

|| ($_FILES["file"]["type"] == "image/pjpeg"))

($_FILES["file"]["size"] 20000))

{

if ($_FILES["file"]["error"] 0)

{

echo "Return Code: " . $_FILES["file"]["error"] . "br /";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "br /";

echo "Type: " . $_FILES["file"]["type"] . "br /";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";

echo "Temp file: " . $_FILES["file"]["tmp_name"] . "br /";

if (file_exists("upload/" . $_FILES["file"]["name"]))

{

echo $_FILES["file"]["name"] . " already exists. ";

}

else

{

move_uploaded_file($_FILES["file"]["tmp_name"],

"upload/" . $_FILES["file"]["name"]);

echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

}

}

}

else

{

echo "Invalid file";

}

?

上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。

注释:这个例子把文件保存到了名为 "upload" 的新文件夹。

怎样用php实现上传图片到数据库

php实现上传图片保存到数据库的方法。具体分析如下:

php 上传图片,一般都使用move_uploaded_file方法保存在服务器上。但如果一个网站有多台服务器,就需要把图片发布到所有的服务器上才能正常使用(使用图片服务器的除外)

如果把图片数据保存到数据库中,多台服务器间可以实现文件共享,节省空间。

首先图片文件是二进制数据,所以需要把二进制数据保存在mysql数据库。

mysql数据库提供了BLOB类型用于存储大量数据,BLOB是一个二进制对象,能容纳不同大小的数据。

BLOB类型有以下四种,除存储的最大信息量不同外,其他都是一样的。可根据需要使用不同的类型。

TinyBlob       最大 255B

Blob              最大 65K

MediumBlob  最大 16M

LongBlob      最大 4G

数据表photo,用于保存图片数据,结构如下:

CREATE TABLE `photo` (  

`id` int(10) unsigned NOT NULL auto_increment,  

`type` varchar(100) NOT NULL,  

`binarydata` mediumblob NOT NULL,  

PRIMARY KEY  (`id`)  

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

upload_image_todb.php代码如下:

?php  

// 连接数据库  

$conn=@mysql_connect("localhost","root","")  or die(mysql_error());  

@mysql_select_db('demo',$conn) or die(mysql_error()); // 判断action  

$action = isset($_REQUEST['action'])? $_REQUEST['action'] : ''; 

// 上传图片  

if($action=='add'){  

$image = mysql_escape_string(file_get_contents($_FILES['photo']['tmp_name']));  

$type = $_FILES['photo']['type'];  

$sqlstr = "insert into photo(type,binarydata) values('".$type."','".$image."')";  

@mysql_query($sqlstr) or die(mysql_error());  

header('location:upload_image_todb.php');  

exit();  

// 显示图片  

}elseif($action=='show'){  

$id = isset($_GET['id'])? intval($_GET['id']) : 0;  

$sqlstr = "select * from photo where id=$id";  

$query = mysql_query($sqlstr) or die(mysql_error());  

$thread = mysql_fetch_assoc($query);  

if($thread){  

header('content-type:'.$thread['type']);  

echo $thread['binarydata'];  

exit();  

}  

}else{  

// 显示图片列表及上传表单  

?  

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""  

html  

head  

meta http-equiv="content-type" content="text/html; charset=utf-8"  

title upload image to db demo /title  

/head  

body  

form name="form1" method="post" action="upload_image_todb.php" enctype="multipart/form-data"  

p图片:input type="file" name="photo"/p  

pinput type="hidden" name="action" value="add"input type="submit" name="b1" value="提交"/p  

/form  

?php  

$sqlstr = "select * from photo order by id desc";  

$query = mysql_query($sqlstr) or die(mysql_error());  

$result = array();  

while($thread=mysql_fetch_assoc($query)){  

$result[] = $thread;  

}  

foreach($result as $val){  

echo 'pimg 

src="upload_image_todb.php?action=showid='.$val['id'].'t='.time().'"

width="150"/p';  

}  

?  

/body  

/html  

?php  

}  

?

程序运行截图和数据库截图:

如何用php实现上传excel

第一,在前台html页面进行上传文件:如:

复制代码代码如下:

form method="post" action="php文件"enctype="multipart/form-data"

h3导入Excel表:/h3input type="file" name="file_stu" /

input type="submit" value="导入"/

/form

第二,在对应的php文件进行文件的处理

复制代码代码如下:

if (! empty ( $_FILES ['file_stu'] ['name'] ))

{

$tmp_file = $_FILES ['file_stu'] ['tmp_name'];

$file_types = explode ( ".", $_FILES ['file_stu']['name'] );

$file_type = $file_types [count ( $file_types ) - 1];

/*判别是不是.xls文件,判别是不是excel文件*/

if (strtolower ( $file_type ) !="xls")

{

$this-error ( '不是Excel文件,重新上传' );

}

/*设置上传路径*/

$savePath = SITE_PATH . '/public/upfile/Excel/';

/*以时间来命名上传的文件*/

$str = date ( 'Ymdhis' );

$file_name = $str . "." . $file_type;

/*是否上传成功*/

if (! copy ( $tmp_file, $savePath . $file_name ))

{

$this-error ( '上传失败' );

}

/*

*对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中

注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入

*/

$res = Service ( 'ExcelToArray' )-read ( $savePath . $file_name );

/*

重要代码解决Thinkphp M、D方法不能调用的问题

如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码

*/

//spl_autoload_register ( array ('Think', 'autoload' ) );

/*对生成的数组进行数据库的写入*/

foreach ( $res as $k = $v )

{

if ($k != 0)

{

$data ['uid'] = $v[0];

$data ['password']= sha1 ( '111111' );

$data ['email'] =$v [1];

$data ['uname'] = $v [3];

$data ['institute'] = $v [4];

$result = M ( 'user' )-add( $data );

if (! $result)

{

$this-error ( '导入数据库失败' );

}

}

}

}

第三:ExcelToArrary类,用来引用phpExcel并处理Excel数据的

复制代码代码如下:

class ExcelToArrary extends Service{

public function __construct() {

/*导入phpExcel核心类 注意:你的路径跟我不一样就不能直接复制*/

include_once('./Excel/PHPExcel.php');

}

/**

* 读取excel $filename 路径文件名$encode 返回数据的编码默认为utf8

*以下基本都不要修改

*/

public function read($filename,$encode='utf-8'){

$objReader = PHPExcel_IOFactory::createReader('Excel5');

$objReader-setReadDataOnly(true);

$objPHPExcel = $objReader-load($filename);

$objWorksheet = $objPHPExcel-getActiveSheet();

$highestRow =$objWorksheet-getHighestRow();

$highestColumn = $objWorksheet-getHighestColumn();

$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);

$excelData = array();

for($row = 1; $row = $highestRow; $row++) {

for ($col = 0; $col $highestColumnIndex;$col++) {

$excelData[$row][] =(string)$objWorksheet-getCellByColumnAndRow($col,$row)-getValue();

}

}

return $excelData;

}

}

怎么用php文件上传功能,并可以同时进行数据提交,请问代码如何写?

?php

// $_FILES["file"]["type"] 其中["file"] html中标签的name

if ((($_FILES["file"]["type"] == "image/gif") //检查上传的文件类型为gif

|| ($_FILES["file"]["type"] == "image/jpeg")//检查上传的文件类型为jpg

|| ($_FILES["file"]["type"] == "image/pjpeg"))//检查上传的文件类型为jpeg

($_FILES["file"]["size"] 20000))//检查上传的文件大小

{

if ($_FILES["file"]["error"] 0)//判断是否为错误

{

echo "Return Code: " . $_FILES["file"]["error"] . "br /";//如果错误则输出错误信息

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "br /"; //输出文件名称

echo "Type: " . $_FILES["file"]["type"] . "br /";//输出文件类型

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kbbr /";//输出文件大小

echo "Temp file: " . $_FILES["file"]["tmp_name"] . "br /";//输出临时文件名称

if (file_exists("upload/" . $_FILES["file"]["name"]))//判断上传文件是否存在upload文件夹里

{

echo $_FILES["file"]["name"] . " already exists. ";//如果存在则提示信息

}

else

{

move_uploaded_file($_FILES["file"]["tmp_name"],

"upload/" . $_FILES["file"]["name"]);//如果不存在则拷贝临时文件到upload文件夹

echo "Stored in: " . "upload/" . $_FILES["file"]["name"];//输出上传文件路径+文件名称

}

}

}

else

{

echo "Invalid file";//错误信息

}

?


本文名称:php+上传数据代码 php图片上传代码
网站地址:http://cdkjz.cn/article/hicehj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220