php实现数据上传并显示 php文件上传函数

如何用php实现上传excel第一php实现数据上传并显示 , 在前台html页面进行上传文件:如:
复制代码代码如下:
form method="post" action="php文件"enctype="multipart/form-data"
h3导入Excel表:/h3input type="file" name="file_stu" /
input type="submit"value="https://www.04ip.com/post/导入"/
/form
第二php实现数据上传并显示,在对应的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文件php实现数据上传并显示,判别是不是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 = https://www.04ip.com/post/array();
for($row = 1; $row = $highestRow; $row) {
for ($col = 0; $col$highestColumnIndex;$col) {
$excelData[$row][] =(string)$objWorksheet-getCellByColumnAndRow($col,$row)-getValue();
}
}
return $excelData;
}
}
thinkphp3.2.3上传文件显示进度因为上述操作包含了上传文件的操作,而普通ajax无法实现文件上传,经过百度有使用FormData对象与插件这两种方法,详见前一篇转载的博文 , 于是我就尝试了一下FormData对象的方法 。
情景:我要利用thinkPHP3.2.3框架实现增加商品时对其输入数据合法性的验证之后到前台提示,一开始是通过内置的跳转函数实现的跳转提示,会跳到一个页面显示再返回 , 这样给人的视觉体验很不好,于是想修改为ajax方式来实现异步更新数据而不刷新此页面,也不离开此页面,而是通过alert弹出警告框来提示用户输入数据的合法性与否 。因为商品的表单数据中包含文件 , 所以一开始使用ajax时使用jquery内置的收集数据的方法:$("form").serialize(); 但是它不支持文件数据的收集,于是百度后就尝试使用FormData加上ajax来实现表单的异步提交并实现文件的上传 。
首先在控制器就要修改执行成功或失败时的跳转函数,如
$this-success('添加成功!',U('listGoods'),true);
$this-error('添加失败!',U('add'),true);
细心的同学应该发现了跟以前写的有不同之处吧,就是多给了一个参数 , 默认是false,设置为true时表明表单是使用ajax提交的 , 从而不执行跳转,而是返回json格式的数据如下:
{"info":"添加成功!","status":1,"url":"\/shop\/index.php\/Admin\/Goods\/listGoods.html"}
{"info":"添加成功!","status":0,"url":"\/shop\/index.php\/Admin\/Goods\/listGoods.html"}
这样就可以在前台的ajax执行的success回调函数内部获取数据,status=1表示成功,status=0表示失败 。
一开始使用的方法代码如下:
function testAjax(){
var formData = https://www.04ip.com/post/new FormData(document.getElementById("addForm"));
$.ajax({
url:"__SELF__",
type:"post",
data:formData,
dataType: 'json',
processData:false,// 告诉jQuery不要去处理发送的数据
contentType:false,// 告诉jQuery不要去设置Content-Type请求头
success:function(data){
window.clearInterval(timer);
console.log("over...");
//判断是否添加成功
【php实现数据上传并显示 php文件上传函数】if(data.status == 1){
alert(data.info);
location.href = https://www.04ip.com/post/data.url;
}
else{
alert(data);
}
},
error:function(e){
alert("错误");
window.clearInterval(timer);
}
});
get();//此处为上传文件的进度条
}
正常情况下是不跳转的 , 但是我猜应该是使用了FormData对象的缘故,导致ajax执行回调函数后 , 一直自行跳到一个空白界面显 示返回的json格式的提示信息 。这样的效果显然不是我要的,于是就开始测试,看到底是哪里出错了,最后发现确实没法控制它,正一筹莫展时突然发现现在使用的是绑定了提交按钮的onclick事件,我猜会不会是这个原因,反正改一下也没关系,于是将其改成 限制通过按钮提交表单的方法来实现果然不自行跳转了 , 真的激动?。。≌馐泵靼鬃罟丶蛴Ω酶鶩ormData无关了,其实就是提 交方式的原因导致的 。
PHP实现上传图片到数据库并显示输出的方法本文实例讲述php实现数据上传并显示了PHP实现上传图片到数据库并显示输出php实现数据上传并显示的方法 。分享给大家供大家参考,具体如下:
1.
创建数据表
CREATE
TABLE
ccs_image
(
id
int(4)
unsigned
NOT
NULL
auto_increment,
description
varchar(250)
default
NULL,
bin_data
longblob,
filename
varchar(50)
default
NULL,
filesize
varchar(50)
default
NULL,
filetype
varchar(50)
default
NULL,
PRIMARY
KEY
(id)
)engine=myisam
DEFAULT
charset=utf8
2.
用于上传图片到服务器的页面
upimage.html
!doctype
html
html
lang="en"
head
meta
charset="UTF-8"
meta
name="viewport"
content="width=device-width,
user-scalable=no,
initial-scale=1.0,
maximum-scale=1.0,
minimum-scale=1.0"
meta
http-equiv="X-UA-Compatible"
content="ie=edge"
style
type="text/css"
*{margin:
1%}
/style
titleDocument/title
/head
body
form
method="post"
action="upimage.php"
enctype="multipart/form-data"
描述:
input
type="text"
name="form_description"
size="40"
input
type="hidden"
name="MAX_FILE_SIZE"
value="https://www.04ip.com/post/1000000"
br
上传文件到数据库:
input
type="file"
name="form_data"
size="40"br
input
type="submit"
name="submit"
value="https://www.04ip.com/post/submit"
/form
/body
/html
3.
处理图片上传的php
upimage.php
?php
if
(isset($_POST['submit']))
{
$form_description
=
$_POST['form_description'];
$form_data_name
=
$_FILES['form_data']['name'];
$form_data_size
=
$_FILES['form_data']['size'];
$form_data_type
=
$_FILES['form_data']['type'];
$form_data
=
$_FILES['form_data']['tmp_name'];
$dsn
=
'mysql:dbname=test;host=localhost';
$pdo
=
new
PDO($dsn,
'root',
'root');
$data
=
addslashes(fread(fopen($form_data,
"r"),
filesize($form_data)));
//echo
"mysqlPicture=".$data;
$result
=
$pdo-query("INSERT
INTO
ccs_image
(description,bin_data,filename,filesize,filetype)
VALUES
('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");
if
($result)
{
echo
"图片已存储到数据库";
}
else
{
echo
"请求失败,请重试";
注:图片是以二进制blob形式存进数据库的,像这样
4.
显示图片的php
getimage.php
?php
$id
=2;//
$_GET['id'];
为简洁,直接将id写上了,正常应该是通过用户填入的id获取的
$dsn='mysql:dbname=test;host=localhost';
$pdo=new
PDO($dsn,'root','root');
$query
=
"select
bin_data,filetype
from
ccs_image
where
id=2";
$result
=
$pdo-query($query);
$result=$result-fetchAll(2);
//
var_dump($result);
$data
=
$result[0]['bin_data'];
$type
=
$result[0]['filetype'];
Header(
"Content-type:
$type");
echo
$data;
到浏览器查看已经上传的图片,看是否可以显示
是没有问题的,证明图片已经以二进制的形式存储到数据库了
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php mysql数据库操作入门教程》、《php mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助 。
您可能感兴趣的文章:php实现上传图片保存到数据库的方法php上传图片存入数据库示例分享php上传图片到指定位置路径保存到数据库的具体实现php中如何将图片储存在数据库里php下将图片以二进制存入mysql数据库中并显示的实现代码php
从数据库提取二进制图片的处理代码php将图片保存入mysql数据库失败的解决方法php将图片文件转换成二进制输出的方法php图片的二进制转换实现方法
关于php实现数据上传并显示和php文件上传函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读