PHP怎么把图片数据保存为jpg图片到服务器目录

现在用js获取到了图片数据,怎么把这数据传给PHP然后保存为图片形式到服务器目录里

    第一步:通过$_FILES获取文件信息。

    第二步:指定新文件名称以及路径,并赋值给一个变量。

    第三步:通过move_uploaded_file上传文件。

    第四步:上传成功后,将数值存入数据库服务器目录即可。

    代码如下

1.conn.php


<? 
$host="localhost"; //数据库服务器名称 
$user="root"; //用户名 
$pwd="1721"; //密码 
$conn=mysql_connect($host,$user,$pwd); 
mysql_query("SET 
character_set_connection=gb2312, 
character_set_results=gb2312, 
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>"; 
return true; 

 
?>

2.upload.php


<?php 
if ($_GET['action'] == "save"){ 
include_once('conn.php'); 
include_once('uploadclass.php'); 
$title=$_POST['title']; 
$pic=$uploadfile; 
if($title == "") 
echo"<Script>window.alert('对不起!你输入的信息不完整!');history.back()</Script>"; 
$sql="insert into upload(title,pic) values('$title','$pic')"; 
$result=mysql_query($sql,$conn); 
//echo"<Script>window.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 width=55 height=20 align="center"> </TD> 
<td height="16"> 
 
<table width="48%" height="93" border="0" cellpadding="0" cellspacing="0"> 
<tr> 
<td>标题:</td> 
<td><input name="title" type="text" id="title"></td> 
</tr> 
<tr> 
<td>文件: </td> 
<td><label> 
<input name="file" type="file" value="浏览" > 
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"> 
</label></td> 
</tr> 
<tr> 
<td> </td> 
<td><input type="submit" value="上 传" name="upload"></td> 
</tr> 
</table></td> 
</tr> 
</table> 
</form> 
 
</body> 
</html>

3.uploadclass.php

<?php 
$uploaddir = "upfiles/";//设置文件保存目录 注意包含/ 
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型 
$patch="upload/";//程序所在路径 
 
//获取文件后缀名函数 
function fileext($filename) 

return substr(strrchr($filename, '.'), 1); 

//生成随机文件名函数 
function random($length) 

$hash = 'CR-'; 
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz'; 
$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']); 
do 

$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>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$uploadfile'></center>"; 
echo "<br><center><a href='upload.htm'>继续上传</a></center>"; 


 

?>

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-18
楼主,你可以用 ajax 试一试
js 要 传送数据给 PHP 的话,就是 JS 要发送服务器请求,目前我所知道的方法是: post / get 通过 一个隐藏按钮,另一种是 ajax ,楼主可以尝试一下追问

这是处理图片数据的代码,打开1.png的时候提示文件损坏,传过来的数据是data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVV...
这样的

追答

你 echo 一下 PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVV. 数据,然后在新的文件中 添加一个 header("Content-type:image/jpg"); 试试,看看图片是否正常显示

追问

使用base64_decode后,生成的文件里面是这样的

本回答被提问者和网友采纳
第2个回答  2015-01-18
这种代码,百度一下,网上大把的有。追问

data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVV
图片数据格式是这样的,怎么保存,我搜的没法保存

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网