很多站长朋友们都不太清楚php使用上传图片,今天小编就来给大家整理php使用上传图片,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP上传图片怎么做? 2、 怎样用php实现上传图片到数据库 3、 php上传图片 4、 PHP在表单中上传图片 5、 php 不使用插件怎么用 ajax上传图片 PHP上传图片怎么做?上传类,保存文件名称为 uppoo.php:
<?php
class upphoto{
public $previewsize=0.125 ; //预览图片比例
public $preview=0; //是否生成预览,是为1,否为0
public $datetime; //随机数
public $ph_name; //上传图片文件名
public $ph_tmp_name; //图片临时文件名
public $ph_path="./userimg/"; //上传文件存放路径
public $ph_type; //图片类型
public $ph_size; //图片大小
public $imgsize; //上传图片尺寸,用于判断显示比例
public $al_ph_type=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png'); //允许上传图片类型
public $al_ph_size=1000000; //允许上传文件大小
function __construct(){
$this->set_datatime();
}
function set_datatime(){
$this->datetime=date("YmdHis");
}
//获取文件类型
function get_ph_type($phtype){
$this->ph_type=$phtype;
}
//获取文件大小
function get_ph_size($phsize){
$this->ph_size=$phsize."<br>";
}
//获取上传临时文件名
function get_ph_tmpname($tmp_name){
$this->ph_tmp_name=$tmp_name;
$this->imgsize=getimagesize($tmp_name);
}
//获取原文件名
function get_ph_name($phname){
$this->ph_name=$this->ph_path.$this->datetime.strrchr($phname,"."); //strrchr获取文件的点最后一次出现的位置
//$this->ph_name=$this->datetime.strrchr($phname,"."); //strrchr获取文件的点最后一次出现的位置
return $this->ph_name;
}
// 判断上传文件存放目录
function check_path(){
if(!file_exists($this->ph_path)){
mkdir($this->ph_path);
}
}
//判断上传文件是否超过允许大小
function check_size(){
if($this->ph_size>$this->al_ph_size){
$this->showerror("上传图片超过2000KB");
}
}
//判断文件类型
function check_type(){
if(!in_array($this->ph_type,$this->al_ph_type)){
$this->showerror("上传图片类型错误");
}
}
//上传图片
function up_photo(){
if(!move_uploaded_file($this->ph_tmp_name,$this->ph_name)){
$this->showerror("上传文件出错");
}
}
//图片预览
function showphoto(){
if($this->preview==1){
if($this->imgsize[0]>2000){
$this->imgsize[0]=$this->imgsize[0]*$this->previewsize;
$this->imgsize[1]=$this->imgsize[1]*$this->previewsize;
}
echo("<img src=\"{$this->ph_name}\" width=\"{$this->imgsize['0']}\" height=\"{$this->imgsize['1']}\">");
}
}
//错误提示
function showerror($errorstr){
echo "<script language=java script>alert('$errorstr');location='java script:history.go(-1);';</script>";
exit();
}
function save(){
$this->check_path();
$this->check_size();
$this->check_type();
$this->up_photo();
$this->showphoto();
}
}
?>
这里是使用的方法:
<?php
header("Content-Type:text/html; charset=utf-8");
//类的实例化:
include("uppoo.php");//类的文件名是upoop.php
$up=newupphoto;
$submit=$_POST['submit'];
if($submit=="上传"){
$up->get_ph_tmpname($_FILES['photo']['tmp_name']);
$up->get_ph_type($_FILES['photo']['type']);
$up->get_ph_size($_FILES['photo']['size']);
$up->get_ph_name($_FILES['photo']['name']);
$up->save();
}
?>
//上传图片的HTML:
<form action="upphoto.php?action=act" method="post" enctype="multipart/form-data">
图片来源:<input type="file" name="photo">
<input type="submit" name="submit" value="上传">
怎样用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>
<p><input 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 '<p><img
src="/data/upload/help/202303/13/97c37747236a6e3b299bd52fc4c622a1.php?action=showid='.$val['id'].'t='.time().'"
width="150"></p>';
}
?>
</body>
</html>
<?php
}
?>
程序运行截图和数据库截图:
php上传图片这个需要控件,单纯的php无法实现异步上传.
你可以试下这个
下载地址:
PHP在表单中上传图片上传图片 不用jq 单纯用表单不就能实现么,表单提交到处理页面 先执行上传操作 上传结束后,直接 调用 处理表单的方法
php 不使用插件怎么用 ajax上传图片可以使用tp的自带的上传类
publicfunction ajaxupload(){
//$saveTime=date('Y').'/'.date('m').'/'.date('d').'/';//设置附件上传目录
$fileName=$_GET['fileName'];
$upload = new \Org\Util\UploadFile();// 实例化上传类
$upload->maxSize = 314572 ;// 设置附件上传大小
$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->savePath = './CustomerPaper/'.'cid'.$customerdir."/"; // 设置附件上传根目录
// 上传单个文件
$info = $upload->uploadOne($_FILES[$fileName]);
//dump($upload);die;
if(!$info) {// 上传错误提示错误信息
$data['flag']=0;
$data['msg']=$upload->getErrorMsg();
}else{// 上传成功获取上传文件信息
$data['flag']=1;
$data['msg']=."/".$info[0]['savepath'].$info[0]['savename'];
}
//$this->ajaxReturn($data,'JSON');
echo json_encode($data);
}
关于php使用上传图片的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php使用上传图片 php上传图片到指定文件夹的详细内容...