php&mysql上传文件问题

<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 ?>

你可能感兴趣的:(mysql,文件上传,PHP)