imagegif(resource $image [, string $filename ]) 从 image 图像以 filename 为文件名创建一个 GIF 图像.image 参数是 imagecreate() 或 imagecreatefrom* 函数的返回值.
imagejpeg(resource $image [, string $filename ]) 从 image 图像以 filename 为文件名创建一个 JPEG 图像.
imagepng(resource $image [, string $filename ]) 将 GD 图像流(image)以 PNG 格式输出到标准输出(通常为浏览器),或者如果用 filename 给出了文件名则将其输出到该文件.
filename 文件保存的路径,如果未设置或为 NULL,将会直接输出原始图象流.
这几个函数你参考一下,希望对你有帮助.
存储的是相对路径,可以到网站服务器上查看,应该有upload文件夹,里面就是存储的图片,这样写的好处是节省了数据库存储空间,转移的时候可以直接将整个服务器的图片打包转移.
访问的时候,前面可以拼接域名和指定的路径,这些后台可以轻松获取到,然后拼接上服务器的路径,我们就可以直接在网页上访问到图片了.
这是很常见的图片数据库保存方式,和直接把图片的二进制存入数据库,这样的方式便于检索,占用空间小.当然,目前主流都采用oss来单独存储文件了,就是有专门的文件服务器,这个时候,一般存储的是完整的图片路径.
这里我要跟你说明一下,如果你在一个公司的话,公司的数据库 是绝对不会让你直接在数据库里面存储图片的,只会存储一个服务器的路径而已,所以你要先把图片路径输出出来 数据库图片类型 varchar
第一步:通过$_FILES获取文件信息.
第二步:指定新文件名称以及路径,并赋值给一个变量.
第三步:通过move_uploaded_file上传文件.
第四步:上传成功后,将数值存入数据库服务器目录即可.
代码如下
①conn.php
$host="localhost";?//数据库服务器名称?
$user="root";?//用户名?
$conn=mysql_connect($host,$user,$pwd);?
mysql_query("SET?
character_set_client=binary",$conn);?
if?($conn==FALSE)?
{?
echo?"center服务器连接失败!br请刷新后重试./center";?
return?true;?
}?
$databasename="database";//数据库名称?
do?
$con=mysql_select_db($databasename,$conn);?
}while(!$con);?
if?($con==FALSE)?
echo?"center打开数据库失败!br请刷新后重试./center";?
php?
if?($_GET['action']?==?"save"){?
include_once('conn.php');?
include_once('uploadclass.php');?
$title=$_POST['title'];?
$pic=$uploadfile;?
if($title?==?"")?
echo"Scriptwindow.alert('对不起!你输入的信息不完整!');history.back()/Script";?
$sql="insert?into?upload(title,pic)?values('$title','$pic')";?
$result=mysql_query($sql,$conn);?
//echo"Scriptwindow.alert('信息添加成功');location.href='upload.php'/Script";?
html?
head?
title文件上传实例/title?
/head?
body?
form?method="post"?action="?action=save"?enctype="multipart/form-data"?
table?border=0?cellspacing=0?cellpadding=0?align=center?width="100%"?
tr?
td标题:/td?
tdinput?name="title"?type="text"?id="title"/td?
/tr?
td文件:?/td?
tdlabel?
input?name="file"?type="file"?value="浏览"?
/label/td?
td?/td?
tdinput?type="submit"?value="上?传"?name="upload"/td?
/table/td?
/table?
/form?
/body?
/html
$uploaddir?=?"upfiles/";//设置文件保存目录?注意包含/?
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型?
$patch="upload/";//程序所在路径?
//获取文件后缀名函数?
function?fileext($filename)?
return?substr(strrchr($filename,?'.'),?1);?
//生成随机文件名函数?
function?random($length)?
$hash?=?'CR-';?
$max?=?strlen($chars)?-?1;?
mt_srand((double)microtime()?*?1000000);?
for($i?=?0;?$i?$length;?$i◆◆)?
$hash?.=?$chars[mt_rand(0,?$max)];?
return?$hash;?
$a=strtolower(fileext($_FILES['file']['name']));?
//判断文件类型?
if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type))?
$text=implode(",",$type);?
echo?"您只能上传以下类型文件:?",$text,"br";?
//生成目标文件的文件名?
else{?
$filename=explode(".",$_FILES['file']['name']);?
$filename[0]=random(10);?//设置随机数长度?
$name=implode(".",$filename);?
//$name1=$name.".Mcncc";?
$uploadfile=$uploaddir.$name;?
while(file_exists($uploadfile));?
if?(move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile))?
if(is_uploaded_file($_FILES['file']['tmp_name']))?
echo?"上传失败!";?
else?
{//输出图片预览?
echo?"center您的文件已经上传完毕?上传图片预览:?/centerbrcenterimg?src='$uploadfile'/center";?
echo?"brcentera?href='upload.htm'继续上传/a/center";?
通常对用户上传的图片需要保存到数据库中.解决方法一般有两种:一种是将图片保存的路径存储到数据库;另一种是将图片以二进制数据流的形式直接写入数据库字段中.以下为具体方法:
第一段:保存图片的上传路径到数据库:
string uppath="";//用于保存图片上传路径
//获取上传图片的文件名
string fileFullname = this.FileUpload1.FileName;
//获取图片上传的时间,以时间作为图片的名字可以防止图片重名
string dataName = DateTime.Now.ToString("yyyyMMddhhmmss");
//获取图片的文件名(不含扩展名)
string fileName = fileFullname.Substring(fileFullname.LastIndexOf("\\") ◆ 1);
//获取图片扩展名
string type = fileFullname.Substring(fileFullname.LastIndexOf(".") ◆ 1);
//判断是否为要求的格式
if (type == "bmp" || type == "jpg" || type == "jpeg" || type == "gif" || type == "JPG" || type == "JPEG" || type == "BMP" || type == "GIF")
{
//将图片上传到指定路径的文件夹
this.FileUpload1.SaveAs(Server.MapPath("~/upload") ◆ "\\" ◆ dataName ◆ "." ◆ type);
//将路径保存到变量,将该变量的值保存到数据库相应字段即可
uppath = "~/upload/" ◆ dataName ◆ "." ◆ type;
}
第二段:将图片以二进制数据流直接保存到数据库:
引用如下命名空间:
using System.Drawing;
using System.IO;
using System.Data.SqlClient;
设计数据库时,表中相应的字段类型为iamge
保存:
//图片路径
string strPath = this.FileUpload1.PostedFile.FileName.ToString ();
//读取图片
FileStream fs = new System.IO.FileStream(strPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
//存入
SqlCommand myComm = new SqlCommand(strComm, myConn);
myComm.Parameters.Add("@photoBinary", SqlDbType.Binary, photo.Length);
myComm.Parameters["@photoBinary"].Value = photo;
myConn.Open();
if (myComm.ExecuteNonQuery() 0)
this.Label1.Text = "ok";
myConn.Close();
读取:
...连接数据库字符串省略
mycon.Open();
SqlCommand command = new
byte[] image = (byte[])command.ExecuteScalar ();
//指定从数据库读取出来的图片的保存路径及名字
string strPath = "~/Upload/zhangsan.JPG";
string strPhotoPath = Server.MapPath(strPath);
//按上面的路径与名字保存图片文件
BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate));
bw.Write(image);
bw.Close();
//显示图片
this.Image1.ImageUrl = strPath;
采用俩种方式可以根据实际需求灵活选择.
前几天 刚弄的 app提交图片的接口,二进制那种比较麻烦,
让app那端也用 浏览器那种方式提交过来,php正常接收就ok
然后返回地址、图片属性,(这边不用保存到本地吧,app那端应该是保存到本地),多个的话循环一下也行,也不慢
最后app把多个图片以及表情、内容什么的提交过来 ,然后保存到数据库 应该是 ok的 ,如果 单独保存图片 正则匹配一下!!!
以上就是土嘎嘎小编为大家整理的php保存数据流图片相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!