本文目录一览:
- 1、php 编写 实现上传图片至服务器的函数
- 2、php网页批量上传图片是怎么实现的,有没有例子,或插件
- 3、php上传图片文件常用的几个方法
- 4、PHP实现上传图片到数据库并显示输出的方法
- 5、PHP上传图片并把图片地址写入表单中!
php 编写 实现上传图片至服务器的函数
?php
class FileUpload{
private $filepath; //指定上传文件保存的路径
private $allowtype=array("gif","jpg","jpeg","png");//允许上传文件的类型
private $maxsize=1000000;//允许上传文件的最大值
private $israndname=true;//是否随机重命名,
private $originName;//源文件名字
private $tmpFileName;//临时文件名字
private $fileType;//上传后的文件类型,主要是文件后缀名
private $fileSize;//文件尺寸
private $newFileName;//新文件名字
private $errorName=0;//错误号
private $errorMess="";//用来提供错误报告
//用于对上传文件初始化
//指定上传路径 2·允许的类型 3·限制大小 4·是否使用随机文件名称
//让用户可以不用换位置传参数,后面参数给值不用按照位置或者必须有值
function __construct($options=array()){
foreach($options as $key=$val){
$key = strtolower($key);
//查看用户参数中的数组下标是否和成员属性名相同
//get_class_vars(get_class($this))得到类属性的数组
//如果$key下标不在这个类属性的数组中,则退出for循环
if (!in_array($key,get_class_vars(get_class($this)))){
continue;
}
$this - setOption($key,$val);
}
}
private function setOption($key,$val){
//让实例化后获取过来的数组下标 = 数组下标的值,这里即为构造函数初始化
//构造函数中调用,等于把所有属性初始化,将来可以直接访问
$this - $key=$val;
}
private function getError(){
$str="上传文件{$this-originName}时出错";
switch($this - errorNum){
case 4: $str.="没有文件被上传";
break;
case 3: $str.="文件只有部分上传";
break;
case 2: $str.="上传文件超过了表单的值";
break;
case 1: $str.="上传文件超过phpini的值";
break;
case -1: $str.="未允许的类型";
break;
case -2: $str.="文件过大上传文件不能超过{$this-maxsize}字节";
break;
case -3: $str.="上传文件失败";
break;
case -4: $str.="建立存放上传文件目录失效,请重新上传指定目录";
break;
case -5: $str.="必须指定上传文件的路径";
break;
default: $str.="未知错误";
}
return $str.'br';
}
//用来检查文件上传路径
private function checkFilePath(){
if(empty($this - filepath)){
$this - setOption("errorNum",-5);
return false;
}
if(!file_exists($this - filepath) || !is_writable($this - filepath)){
if(!@mkdir($this - filepath,0755)){
$this - setOption("errorNum",-4);
return false;
}
}
return true;
}
//用来检查上传文件尺寸大小
private function checkFileSize(){
if($this - fileSize $this -maxsize){
$this - setOption("errorNum",-2);
return false;
}else{
return true;
}
}
//用来检查文件上传类型
private function checkFileType(){
if(in_array(strtolower($this-fileType),$this - allowtype)){
return true;
}else{
//如果$this-fileType这个类型 不在$this - allowtype这个数组中,则把错误号变成-1
$this - setOption("errorNum",-1);
return false;
}
}
private function setNewFileName(){
if($this - israndname){
$this - setOption("newFileName",$this-preRandName());
}else{
$this - setOption("newFileName",$this - originName);
}
}
//用于检查文件随机文件名
private function preRandName(){
$fileName=date("Ymdhis").rand(100,999);
return $fileName.".".$this - fileType;
}
//用来上传一个文件
function uploadFile($fileField){
//检查文件路径
$return = true;
if(!$this - checkFilePath()){
$this - errorMess=$this - getError();
return false;
}//获取文件信息
$name = $_FILES[$fileField]['name'];
$tmp_name = $_FILES[$fileField]['tmp_name'];
$size = $_FILES[$fileField]['size'];
$error = $_FILES[$fileField]['error'];
if(is_array($name)){//判断获取过来的文件名字是否为数组
$errors=array();//如果为数组则设置为一个数组错误号
for($i=0;$icount($name);$i++){
//循环每个文件即每个类属性赋值或者说初始化属性值 或者初始化构造函数
if($this-setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
if(!$this-checkFileSize() || !$this-checkFileType()){
//如果上面尺寸或者类型不对,则调用这个错误信息
$errors[$i]=$this-getError();
$return=false;
}
}else{
//这里是
$error[]=$this-getError();
$return=false;
}
if(!$return)
$this-setFiles();
}
if($return){
$fileNames=array();
for($i=0;$icount($name);$i++){
if($this-setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
$this-setNewFileName();
if(!$this-copyFile()){
$errors=$this-getError();
$return=false;
}else{
$fileNames[$i]=$this-newFileName;
}
}
}
$this-newFileName=$fileNames;
}
$this-errorMess=$errors;
return $return;
}else{
//看看$name,$tmp_name,$size,$error这些是否赋值成功 否则返回FALSE
if($this - setFiles($name,$tmp_name,$size,$error)){
//看看文件大小尺寸是否匹配,不匹配返回FALSE
if($this - checkFileSize() $this - checkFileType()){
//获取新文件名
$this-setNewFileName();
if($this-copyFile()){
return true;
}else{
return false;
}
}else{
$return=false;
}
}else{
$return=false;
}
if(!$return){
$this - errorMess = $this -getError();
return $return;
}
}
}
function copyFile(){//将文件从临时目录拷贝到目标文件夹
if(!$this-errorNum){
//如果传递来的路径有斜杠,则删除斜杠再加上斜杠
//./upload+./
$filepath=rtrim($this-filepath,'/').'/';
//./upload+./+加上随机后的新文件名和后缀
//这里指创建一个新的$filepath.这个文件 像占位符但是为空的
$filepath.=$this-newFileName;
//尝试着把临时文件$this-tmpFileName移动到$filepath下哪里覆盖原来的这个文件
if(@move_uploaded_file($this-tmpFileName,$filepath)){
return true;
}else{
$this-setOption('errorNum',-3);
return false;
}
}else{
return false;
}
}
//这里是为了其他剩余的属性进行初始化操作!
private function setFiles($name="",$tmp_name="",$size=0,$error=0){
//这里给错误号赋值
$this - setOption("errorNum",$error);
//如果这里有错误,直接返回错误
if ($error){
return false;
}
$this - setOption("originName",$name);//复制名字为源文件名
$this - setOption("tmpFileName",$tmp_name);
$arrstr = explode(".",$name);//按点分割文件名,
//取分割后的字符串数组最后一个 并转换为小写,赋值为文件类型
$this - setOption("fileType",strtolower($arrstr[count($arrstr)-1]));
$this - setOption("fileSize",$size);
return true;
}
//用来获取上传后的文件名
function getNewFileName(){
return $this - newFileName;
}
//上传失败,后则返回这个方法,就可以产看报告
function getErrorMsg(){
return $this - errorMess;
}
}
?
============================调用====================================
?php
require("FileUpload.class.php");
//这里实例化后赋值为数组,数组的下标要对应类中属性的值,否则不能传递值,可以不分先后但是必须一致
$up = new FileUpload(array('israndname'='true',"filepath"="./upload/",'allowtype'=array('txt','doc','jpg','gif'),"maxsize"=1000000));
echo 'pre';
if($up - uploadFile("pic")){
print_r($up - getNewFileName());
} else{
print_r($up - getErrorMsg());
}
echo 'pre';
?
-------------------HTML-------------------------
html
head
meta http-quive="content-type" content="text/html;charset=utf-8" /meta
/head
body
form action="upload.php" method="post" enctype="multipart/form-data"
shoppic:input type="file" name="pic[]"br
input type="hidden" name="MAX_FILE_SIZE" value="1000000"
input type="submit" name="sub" value="添加商品"
/form
/body
/html
-------------------或者HTML-------------------------
html
head
meta http-quive="content-type" content="text/html;charset=utf-8" /meta
/head
body
form action="upload.php" method="post" enctype="multipart/form-data"
//区别在这里
shoppic:input type="file" name="pic[]"br
shoppic:input type="file" name="pic[]"br
shoppic:input type="file" name="pic[]"br
input type="hidden" name="MAX_FILE_SIZE" value="1000000"
input type="submit" name="sub" value="添加商品"
/form
/body
/html
=====================================================================
以上是自己总结的 还没有怎么精简加工过,仅供参考
以上不止可以上传图片,可以上自定义任何文件
php网页批量上传图片是怎么实现的,有没有例子,或插件
#region 绑定 FileUpLoad 控件
public static bool ControlFun(FileUpload ControlName, string[] FileType, int FileSize, string SaveFileName)
{
// 获取上传文件路径
string FileDir = ControlName.PostedFile.FileName;
// 获取上传文件名
string FileName = FileDir.Substring(FileDir.LastIndexOf("\\") + 1);
// 获取上传文件类型
string Types = FileDir.Substring(FileDir.LastIndexOf(".") + 1);
// 获取上传文件大小
int Size = ControlName.PostedFile.ContentLength;
// 获取上传文件名并改名
string UpFileNames = FileName.Substring(FileName.LastIndexOf("."));
// 获取上传文件时间,修改上传文件名
string EditFileName = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff").Replace(" ", "_").Replace(":", "-") + Guid.NewGuid().ToString();
// 上传文件真正名
string UFName = EditFileName + UpFileNames; ;
try
{
// 判断文件类型
string StrType = "";
for (int i = 0; i FileType.Length; i++)
{
if (Types == FileType[i])
{
StrType = Types;
}
}
// 判断文件类型
if (Types != StrType)
{
ShowMessage.Box("上传文件类型不符合");
return false;
}
// 判断文件大小
if (Size FileSize)
{
ShowMessage.Box("上传文件大小超出范围!");
return false;
}
// 上传文件
ControlName.PostedFile.SaveAs(HttpContext.Current.Server.MapPath(SaveFileName) + "/" + UFName);
return true;
}
catch
{
return false;
}
}
#endregion
php上传图片文件常用的几个方法
你好,要先建立一个html代码
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
然后创建upload_file文件用$_FILE判断文件,下面是判断文件的具体信息
$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代
希望对你有帮助!
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="1000000"
br
上传文件到数据库:
input
type="file"
name="form_data"
size="40"br
input
type="submit"
name="submit"
value="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上传图片并把图片地址写入表单中!
其实要保存上传的图片地址并不需要专门地一个input表单项,只要在这个form提交到的后台页面里面做相应处理即可。
你可在后台的表单处理页面里面查找 move_uploaded_file() 这个函数,它的第一个参数是图片的临时文件名,第二个参数是即将保存的地址。只要把这第二个参数保存到数据库即可满足您的要求,并不需要从表单提交一个图片过来再保存。