php 图片上传 二进制数据模式

1将文件存到项目路径下,保存图片的路径

2.二进制的数据生成对应的图片,如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。   

 

PHP 自动将图片转换成BASE64 

Java代码   收藏代码
  1. <?php  
  2. function base64_encode_image ($filename='string',$filetype='string') {  
  3.     if ($filename) {  
  4.         $imgbinary = fread(fopen($filename, "r"), filesize($filename));  
  5.         //file_put_contents('b.png',$imgbinary);  
  6.         return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);  
  7.     }  
  8. }  
  9. ?>  
  10. <img src="<?php echo base64_encode_image ('a.png','png'); ?>"/>  

二、在MySQL中建立一个新的database    
  首先,你必须在你的MySQL中建立一个新的数据库,我们将会把那些二进制文件储存在这个数据库里。在例子中我会使用下列结构,为了建立数据库,你必须做下列步骤:

Java代码   收藏代码
  1. CREATE TABLE `binary_data` (  
  2.   `id` int(4) NOT NULL AUTO_INCREMENT,  
  3.   `description` char(50) DEFAULT NULL,  
  4.   `bin_data` longblob,  
  5.   `filename` char(50) DEFAULT NULL,  
  6.   `filesize` char(50) DEFAULT NULL,  
  7.   `filetype` char(50) DEFAULT NULL,  
  8.   PRIMARY KEY (`id`)  
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf-8;  

  输入如下命令:   

Java代码   收藏代码
  1. <?php  
  2. if ($_FILES ['myfile'] != "none" && $_FILES ['myfile'] != "") {  
  3.     $time_limit = 60;  
  4.     set_time_limit ( $time_limit );  
  5.     $file_type = $_FILES ['myfile'] ['type'];  
  6.     $file_name = $_FILES ['myfile'] ['name'];  
  7.     $file_size = $_FILES ['myfile'] ['size'];  
  8.     $fp = fopen ( $_FILES ['myfile'] ['tmp_name'], "rb" );  
  9.     if (! $fp)  
  10.         die ( "file open error" );  
  11.     $file_data = addslashes ( fread ( $fp, $file_size ) );  
  12.     fclose ( $fp );  
  13.     /** 等价 
  14.     $file_data = file_get_contents($_FILES["myfile"]['tmp_name']); 
  15.      */  
  16.     $conn = mysql_connect ( "localhost""root""root" );  
  17.     if (! $conn)  
  18.         die ( "error : mysql connect failed" );  
  19.     mysql_select_db ( "test", $conn );  
  20.     $sql = "insert into receive(file_data,file_type,file_name,file_size)values ('$file_data','$file_type','$file_name',$file_size)";  
  21.     $result = mysql_query ( $sql );  
  22.     $id = mysql_insert_id ();  
  23.     mysql_close ( $conn );  
  24.     set_time_limit ( 30 ); //恢复缺省超时设置  
  25.     echo "上传成功--- ";  
  26.     echo "<a href='show_info.php?id=$id'>显示上传文件信息</a>";  
  27. else {  
  28.     echo "你没有上传任何文件";  
  29. }  
  30. ?>  

(5)show_add.php //从数据库里取出文件内容 http://hudeyong926.iteye.com/blog/898072

Java代码   收藏代码
  1. <?php  
  2. $data = mysql_result($result, 0"file_data");  
  3. $type = mysql_result($result, 0"file_type");  
  4. $fileName = mysql_result($result, 0"file_name");  
  5. mysql_close($conn);  
  6.   
  7. $filePath = 'download/' . $userid . "/" . $fileName;  
  8. file_put_contents($fileName,$data);  
  9. header('Location: /download.php?fileName=' . $fileName . '&file=' . $filePath);  
  10. /* 
  11. //download.php 
  12. $fileName = $_GET['fileName']; 
  13. $file_dir = RelativePath . $_GET['file']; 
  14. $file = @ fopen($file_dir, "r"); 
  15. if (!$file) { 
  16.     echo "File does not exist."; 
  17. } else { 
  18.     ob_end_clean(); 
  19.     Header("Content-type: application/octet-stream"); 
  20.     Header("Content-Disposition: attachment; filename=" . $fileName); 
  21.     while (!feof($file)) { 
  22.         echo fread($file, 50000); 
  23.     } 
  24.     fclose($file); 
  25. } 
  26. */  
  27. ?>  

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值