PHP实现上传文件并存进数据库的方法

本文实例讲述了PHP实现上传文件并存进数据库的方法。分享给大家供大家参考。具体如下:

show_add.php文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php     
   if (!isset( $_REQUEST [ 'id' ]) or $_REQUEST [ 'id' ]== "" ) die ( "error: id none" );
   $id = $_REQUEST [ 'id' ];
   //定位记录,读出
   $conn =mysql_connect( "localhost" , "root" , "admin" );
   if (! $conn ) die ( "error: mysql connect failed" );
   mysql_select_db( "nokiapaymentplat" , $conn );
   $sql = "select * from receive where id=$id" ;
   $result = mysql_query( $sql , $conn );
   if (! $result ) die ( "error: mysql query" );
   $num =mysql_num_rows( $result );
   if ( $num <1) die ( "error: no this recorder" );
   $data = mysql_result( $result ,0, "file_data" );
   $type = mysql_result( $result ,0, "file_type" );
   $name = mysql_result( $result ,0, "file_name" );
   mysql_close( $conn );
   //先输出相应的文件头,并且恢复原来的文件名
   header( "Content-type:$type" );
   header( "Content-Disposition: attachment; filename=$name" );
   echo $data ;
?>

show_info.php文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php 
    if (!isset( $_REQUEST [ 'id' ]) or $_REQUEST [ 'id' ]== "" ) die ( "error: id none" );
   $id = $_REQUEST [ 'id' ];
   //定位记录,读出
   $conn =mysql_connect( "localhost" , "root" , "admin" );
   if (! $conn ) die ( "error: mysql connect failed" );
   mysql_select_db( "nokiapaymentplat" , $conn );
   $sql = "select file_name ,file_size from receive where id=$id" ;
   $result = mysql_query( $sql , $conn );
   if (! $result ) die ( " error: mysql query" );
   //如果没有指定的记录,则报错
   $num =mysql_num_rows( $result );
   if ( $num <1) die ( "error: no this recorder" );
   //下面两句程序也可以这么写
   //$row=mysql_fetch_object($result);
   //$name=$row->name;
   //$size=$row->size;
   $name = mysql_result( $result ,0, "file_name" );
   $size = mysql_result( $result ,0, "file_size" );
   mysql_close( $conn );
   echo "<hr>上传的文件的信息:" ;
   echo "<br>The file's name - $name" ;  
   echo "<br>The file's size - $size"
   echo "<br><a href=show_add.php?id=$id>附件</a>" ;
?>

submit.php文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php  
   if ( is_uploaded_file ( $_FILES [ 'myfile' ][ 'tmp_name' ])) {
   //有了上传文件了 
   $myfile = $_FILES [ "myfile" ];
     //设置超时限制时间,缺省时间为 30秒,设置为0时为不限时
     $time_limit =60;     
     set_time_limit( $time_limit ); //
     //把文件内容读到字符串中
     $fp = fopen ( $myfile [ 'tmp_name' ], "rb" );
     if (! $fp ) die ( "file open error" );
     $file_data = addslashes ( fread ( $fp , filesize ( $myfile [ 'tmp_name' ])));
     fclose( $fp );
     unlink( $myfile [ 'tmp_name' ]); 
     //文件格式,名字,大小
     $file_type = $myfile [ "type" ];
     $file_name = $myfile [ "name" ];
     $file_size = $myfile [ "size" ];
     die ( $file_type );
     //连接数据库,把文件存到数据库中
     $conn =mysql_connect( "localhost" , "root" , "admin" );
     if (! $conn ) die ( "error : mysql connect failed" );
     mysql_select_db( "nokiapaymentplat" , $conn );
     $sql ="insert into receive 
     (file_data,file_type,file_name,file_size) 
     values ( '$file_data' , '$file_type' , '$file_name' , $file_size )";
     $result =mysql_query( $sql , $conn );
     //下面这句取出了刚才的insert语句的id
     $id =mysql_insert_id();
     mysql_close( $conn );
     set_time_limit(30); //恢复缺省超时设置 
     echo "上传成功--- " ;
     echo "<a href='show_info.php?id=$id'>显示上传文件信息</a>" ;
   }  
   else {  
     echo "你没有上传任何文件" ;  
   }  
?>

upload.php文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>  
<head>  
<title>文件上传表单</title>  
</head>  
<body>  
<table>  
<form enctype= 'multipart/form-data' name= 'myform' action= 'submit.php' 
method= 'post' >  
<INPUT TYPE = "hidden" NAME = "MAX_FILE_SIZE" VALUE = "1000000" >
<tr><td>选择上传文件</td><td>
<input name= 'myfile' type= 'file' ></td></tr> 
<tr><td colspan= '2' ><input name= 'submit' value= '上传'  type= 'submit' ></td></tr>  
</table>  
</body>  
</html>

希望本文所述对大家的PHP程序设计有所帮助。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值