<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>上传模块</title>
<?
if(!file_exists("shangchuan/")){
mkdir("shangchuan/");
}
?>
</head>
<body>
<form enctype="multipart/form-data" name="form1" method="post">
<input name="upfile" type="file" size="40" />
<label>
<input type="submit" name="Submit" value="上传" />
</label>
<br/>
请上传jpg、gif格式230*230图片,小于2Mb。
</form>
</body>
</html>
<?
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
If (!is_uploaded_file($_FILES["upfile"]["tmp_name"])){echo "图片不存在!";exit;}
$a=$_FILES["upfile"];
$b=$a["type"];
$c=$a["size"];
$d=$a["tmp_name"];
$e=$a["error"];
$f=$a["name"];
$g=pathinfo($f,PATHINFO_EXTENSION);
$type=array("image/gif","image/jpeg");
if(!in_array($b,$type)){
echo "您上传的文件类型不是jpg和gif的,请转换!";exit;
}
if($c>2000000){
echo "您上传的图片大小超过2MB,请调试!";
}
$weizhi=time().".".$g;
move_uploaded_file($d,'shangchuan/'.$weizhi); //
将上传的文件移动到新位置,一般指服务器路径!
echo "<script>alert('上传成功,图片类型为$g,大小为$c');</script>"; }
以下是理解时刻 :)
$form_data_type = $_FILES ['file'] ['type'];
$form_data = $_FILES ['file'] ['tmp_name'];
db_connect ();//连接mysql
db_select ();//选择数据库
$fileopen = fopen ( $form_data, "rb" );
$filesize = filesize ( $form_data );
$fof = fread ( $fileopen, $filesize );
$data = addslashes ( $fof );
fclose ( $form_data );
$query = "INSERT INTO address_pic (tra_id,pic_type,pic_bin) VALUES ('".$_POST['stra_id']."','$form_data_type','$data')";
mysql_query ( $query);
数据库结构:CREATE TABLE IF NOT EXISTS `address_pic` ( `tra_id` char(20) NOT NULL, `pic_type` char(20) default NULL, `pic_bin` longblob, PRIMARY KEY (`tra_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 如果用phpmyadmin插入图片完全可以,是以十六进制格式存放。难道非得让我先把图片二进制流转成十六进制再存?会不会是addslashes的问题? PS:magic_quotes_gpc=off ?>