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

 

时间: 2024-11-03 17:13:22

php 图片上传 二进制数据模式的相关文章

《JavaScript设计模式》——第11章 牛郎织女——代理模式 11.1无法获取图片上传模块数据

第11章 牛郎织女--代理模式 代理模式(Proxy):由于一个对象不能直接引用另一个对象,所以需要通过代理对象在这两个对象之间起到中介的作用. 由于用户相册模块上传的照片量越来越大,导致服务器端需要将图片上传模块重新部署到另外一个域(可理解为另一台服务器)中,这样对于前端来说,用户上传图片的请求路径发生变化,指向其他服务器,这就导致跨域问题. 11.1 无法获取图片上传模块数据 "小铭,你帮我看看,为什么我向咱们图片上传模块所在的服务器发送的请求,得不到数据呢?"小白问小铭. //

二进制-IOS使用第三方AsycSocket实现图片上传和下载

问题描述 IOS使用第三方AsycSocket实现图片上传和下载 本人想根据username这个字符串作为Key向服务器上传和下载图片,具体实现如下:我用结构体创建一个包头(包头包括数据类型和数据长度两个信息),结构体创建上传(上传包括用户名,字节长度,是否是第一笔数据等).结构体创建下载(只包括用户名),结构体创建下载回复(包括用户名和数据长度)然后用AsycSocket上传和下载:上传的时候由于图片转成NSData后又转成Base64,再弄成二进制流传入服务器,数据较大,所以每次只传入700

服务器那边没数据-iOS 图片上传,服务器那边收不到数据,显示字节数为0

问题描述 iOS 图片上传,服务器那边收不到数据,显示字节数为0 /** 上传头像 接口说明 此接接口以POST方式请求. 请求说明http://124.207.188.52/firmail/app/imgupload/upload?uid=111&file=图片二进制流 参数说明 uid 用户id file 图片的二进制流 */ (void)asiUploadIcon { NSURL *url = [NSURL URLWithString:@"http://124.207.188.52

在 Android 上通过模拟 HTTP multipart/form-data 请求协议信息实现图片上传

通过构造基于 HTTP 协议的传输内容实现图片自动上传到服务器功能 .如果自己编码构造 HTTP 协议,那么编写的代码质量肯定不高,建议模仿 HttpClient .zip examples\mime\ClientMultipartFormPost.java 来实现,并通过源码来进一步理解如何优雅高效地构造 HTTP 协议传输内容.   自己构造 HTTP 协议传输内容的想法,从何而来呢?灵感启迪于这篇博文"Android下的应用编程--用HTTP协议实现文件上传功能 ",以前从未想过

asp.net文件图片上传带预览效果

asp教程.net文件图片上传带预览效果 图片预览主要包括两个部分:从file表单控件获取图像数据,根据数据显示预览图像. 程序的file和img属性就是用来保存file控件和显示预览图像的容器的,而img还必须是img元素. 程序有以下几种预览方式: simple模式:直接从file的value获取图片路径来显示预览,适用于ie6: filter模式:通过selection获取file的图片路径,再用滤镜来显示预览,适用于ie7/8: domfile模式:调用file的getAsDataURL

JavaScript 图片上传预览效果

图片上传预览是一种在图片上传之前对图片进行本地预览的技术. 使用户选择图片后能立即查看图片,而不需上传服务器,提高用户体验. 但随着浏览器安全性的提高,要实现图片上传预览也越来越困难. 不过群众的智慧是无限的,网上已经有很多变通或先进的方法来实现. 例如ie7/ie8的滤镜预览法,firefox 3的getAsDataURL方法. 但在opera.safari和chrome还是没有办法实现本地预览,只能通过后台来支持预览. 在研究了各种预览方法后,作为总结,写了这个程序,跟大家一起分享. 上次写

ASP:利用ASP把图片上传到数据库

ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境.通过ASP我们可以创建功能强大的动态的WEB应用程序.ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件. 在日常工作中,例如开发一个"商品网上销售系统"吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时在文字的旁边有该商品

实例分析:利用ASP把图片上传到数据库

上传|数据|数据库 ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境.通过ASP我们可以创建功能强大的动态的WEB应用程序.ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件. 在日常工作中,例如开发一个"商品网上销售系统"吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时

如何利用ASP把图片上传到数据库

上传|数据|数据库 ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境.通过ASP我们可以创建功能强大的动态的WEB应用程序.ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件. 在日常工作中,例如开发一个"商品网上销售系统"吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时