第一步:通过$_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>"
}
}
}
?>
有两种方法,第一,把你的图片转成字节流,然后用post方法把字节流传到服务端,然后服务端接收到字节流之后,开启一个线程把它重新压缩成图片,保存在某个文件夹下面。第二,开启一个线程,用socket直接把图片放到stream中传到服务端,服务端接收后保存到文件夹下。
你说的压缩,实际上就是生成缩略图。你利用 postedFile.InputStream 生成缩略图后,缩略图可以直接保存到服务器上成为文件,不需要再保存到 postedFile 中了。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)