Flex存储图片到数据库的例子

 As代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12" creationComplete="init()">
<mx:Script>
  <![CDATA[
   import mx.rpc.events.ResultEvent;
   import mx.controls.Alert;
   import mx.graphics.codec.JPEGEncoder;
   import mx.graphics.ImageSnapshot;
   import flash.display.BitmapData;
   import mx.controls.Image;
   private var image:FileReference;
   //保存图片信息到数据库
   private function saveData():void{
    var bmp:BitmapData = ImageSnapshot.captureBitmapData(img);
    var i:Bitmap = new Bitmap(bmp);
    img.source = i;
    var ba:ByteArray = new JPEGEncoder().encode(i.bitmapData);
    save.putimg(ba);
   }
   //保存成功后的返回结果处理方法
   private function saveResult(event:ResultEvent):void{
    Alert.show("save is succeed !");
   }
   //初始化
   private function init():void{
    image = new FileReference();
    image.addEventListener(Event.SELECT,onSelectImage);
    image.addEventListener(Event.COMPLETE,onCompleteImage);
   }
   //选择图片将图片上传到服务器
   private function onSelectImage(e: Event):void{
    try{image.upload(new URLRequest("UploadFile"));}catch(error:Error){};
   }
   //上传完毕进行预览
   private function onCompleteImage(e: Event):void{
    img.source = encodeURI("uploadFolder/"+image.name);
   }
   //请求显示数据库中的二进制图片
   internal function onClick(evt:MouseEvent):void{
                imgserver.blobRead();
            }
            //将从数据库获取的二进制图片显示出来
            internal function GetOneManHuaTuPian_onResult(evt:ResultEvent):void{
                img.source = (evt.result as ByteArray);                   
            }
  ]]>
 </mx:Script>
 <mx:RemoteObject id="save" destination="saveImg" result="saveResult(event)" />
 <mx:RemoteObject id="imgserver" destination="ImageService" >
        <mx:method name="blobRead" result="GetOneManHuaTuPian_onResult(event)"/>
    </mx:RemoteObject>
 <mx:Image id="img" x="25" y="10" width="116" height="122" >
  <mx:source>6.jpg</mx:source>
 </mx:Image>
 <mx:Button x="149" y="10" label="浏览..." click="image.browse()"/>
 <mx:Button x="149" y="108" label="保存" click="saveData()" width="64"/>
 <mx:Button x="149" y="56" label="显示" click="onClick(event)" width="64"/>
</mx:Application>

JAVA代码:

import java.io.*;
import java.sql.*;
import com.qiansoft.util.ByteImage;
public class PutImg {
 public void putimg(byte img []) {
  try {
   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
   String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=TestImg";
   Connection conn = DriverManager.getConnection(url,"sa","876010");
   Statement stmt = conn.createStatement();
   stmt.close();
   PreparedStatement pstmt = null;
   String sql = "";
   sql = "INSERT INTO imgtable  (img) VALUES (?)";
   pstmt = conn.prepareStatement(sql);
   pstmt.setBinaryStream(1, ByteImage.getStreamFromByte(img), (int) img.length);
   pstmt.executeUpdate();
   pstmt.close();
   conn.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

ByteImage代码:

import java.io.*;
import java.sql.*;

public class ByteImage {
 //用于将从数据库中读取的二进制文件流转换为byte数组
 public static byte [] getByteFromStream(InputStream is){
  byte[] b = new byte [1];
  try {
   ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
   //创建数据读取缓存byte数组
   byte[] buffer = new byte[2048];
   int temp;
   if(is == null)
    return null;
   temp = is.read(buffer);
   while (temp != -1) {
    bytestream.write(buffer, 0, temp);
    temp = is.read(buffer);
   }
   //将ByteArrayOutputStream转换为二进制数组
   b = bytestream.toByteArray();
   is.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return b;
 }
 public static InputStream  getStreamFromByte(byte img []){
  return new   ByteArrayInputStream(img);
 }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值