java 大檔案以二進位制儲存到資料庫
一、建立表 oracle: create table baoxiandan ( id number(20) not null, fileName varchar2(200) not null, content blob, primary key(id) ); create sequence seq_baoxiandan; 二、Hibernate對映檔案 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.erry.tntops.acer.model.impl.CarrierImpl" table="BAOXIANDAN" proxy="com.erry.tntops.acer.model.Carrier"> <id name="id" column="ID" type="long" unsaved-value="-1"> <generator class="sequence"> <param name="sequence">SEQ_BAOXIANDAN</param> </generator> </id> <property name="fileName" column="filename" type="java.lang.String" not-null="false"> <meta attribute="caption">${tntops.acer.Carrier.code}</meta> </property> <property name="content" column="content" type="byte[]"> <meta attribute="caption">${tntops.acer.Carrier.name}</meta> </property> </class> </hibernate-mapping> 三、pojo類 import com.erry.tntops.common.model.impl.BaseModelImpl; import com.erry.tntops.acer.model.Carrier; import java.util.Date; /** * Created by IntelliJ IDEA. * User: chenyang * Date: 2008-7-28 * Time: 17:46:32 * To change this template use File | Settings | File Templates. */ public class CarrierImpl extends BaseModelImpl implements Carrier { private long id; private String fileName; private byte content[]; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public byte[] getContent() { return content; } public void setContent(byte[] content) { this.content = content; } } 四、Java程式碼 1、入庫 //獲得檔名,fileNamePath為檔案路徑變數 String fileName = fileNamePath.substring(fileNamePath.lastIndexOf("\\") + 1); File file = new File(fileNamePath); InputStream inputStream = new FileInputStream(file); byte[] data = new byte[] {}; data = inputStreamToByte(inputStream);//將檔案儲存到位元組陣列中 Carrier carrier = (Carrier) SpringContext.getBeanOfType(Carrier.class); carrier.setFileName(fileName); carrier.setContent(data); dao.create(carrier); //將檔案儲存到位元組陣列中 private byte [] inputStreamToByte(InputStream is) throws IOException { ByteArrayOutputStream bAOutputStream = new ByteArrayOutputStream(); int ch; while((ch = is.read() ) != -1){ bAOutputStream.write(ch); } byte data [] =bAOutputStream.toByteArray(); bAOutputStream.close(); return data; } 2、出庫 byte data [] = new byte[]{}; File file =null ; FileOutputStream fos = null; InputStream in = null; String hql = "select carrier from com.erry.tntops.acer.model.Carrier carrier where carrier.fileName=:fileName"; Map map = new HashMap(); map.put("fileName", fileName); Collection collection = dao.retrieve(hql, map); if(collection != null && collection.size() > 0){ Iterator it = collection.iterator(); Carrier carrier = (Carrier) it.next(); data = carrier.getContent(); } //匯出成檔案 file = new File("d:\\" + fileName); if (!file.exists()) { file.createNewFile(); // 如果檔案不存在,則建立 } fos = new FileOutputStream(file); int size = 0; if (data.length > 0) { fos.write(data, 0, data.length); } else { while ((size = in.read(data)) != -1) { fos.write(data, 0, size); } in.close(); } fos.close();
相關推薦
java 大檔案以二進位制儲存到資料庫
一、建立表 oracle: create table baoxiandan ( id number(20) not null, fileName varchar2(200) not null, content blob, primary key
smartupload實現 jsp頁面上傳檔案 將檔案以二進位制形式儲存在資料庫
<%@page import="com.sys.utils.DBConnection"%> <%@ page language="java" import="java.sql.*,com.jspsmart.upload.*"%> <jsp:us
將圖片檔案以二進位制方式儲存和恢復
/** * 將圖片轉換成二進位制 * * @return */ static String getImageBinary() { BASE64Encoder encoder = new sun.misc.BASE64Encoder(); //本地圖片 Fil
php將圖片以二進位制儲存到mysql資料庫並顯示
<?phpinclude('./conn.php');if ($_POST['submit']) { if ($_FILES['image']['size']) { $names = $_FILES['image']['name']; $arr = explo
java讀取檔案以位元組流的形式讀取 然後轉化為位元組流陣列,最後經過SHA1加密生成返回16進位制字串存入資料庫
//根據產品圖片的url返回產品圖片的位元組流陣列 public static final byte[] input2byte(String Url) throws IOException { InputStream in = null; ByteArrayOutputStream byt
JavaWeb實現圖片非同步上傳,在前臺展示,並以二進位制儲存到資料庫
通過(ajaxFileupload.js)提供的ajaxFileUpload方法,非同步上傳圖片,在後臺獲取並轉二進位制先存入session中,成功後返回圖片的id到ajax,並通過jQuery改變 img src的地址請求該圖片的二進位制資源。 二次上傳會覆蓋前一次儲存在
Java:大檔案拆分工具
java大檔案拆分工具(過濾掉表頭) import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.
[Python除錯]Python寫入到csv檔案以文字儲存長數字
解決方法:在需要儲存的數字後+’\t’即可. 在儲存到csv檔案然後用Excel開啟時,發現圖書ISBN顯示為科學計數法,如圖: import csv >>> writer = csv.writer(output) >>> writer.write
java 匯出 excel 最佳實踐,java 大檔案 excel 避免OOM(記憶體溢位) exce
產品需求 產品經理需要匯出一個頁面的所有的資訊到 EXCEL 檔案。 需求分析 對於 excel 匯出,是一個很常見的需求。 最常見的解決方案就是使用 poi 直接同步匯出一個 excel 檔案。 客戶體驗 & 服務效能 客戶體驗 如果匯出的檔案比較大,比如幾十萬條資料,同步匯
java大檔案讀寫操作,java nio 之MappedByteBuffer,高效檔案/記憶體對映
原文地址:https://www.cnblogs.com/lyftest/p/6564282.html java處理大檔案,一般用BufferedReader,BufferedInputStream這類帶緩衝的Io類,不過如果檔案超大的話,更快的方式是採用MappedByteB
java 匯出 excel 最佳實踐,java 大檔案 excel 避免OOM(記憶體溢位) excel 工具框架
產品需求 產品經理需要匯出一個頁面的所有的資訊到 EXCEL 檔案。 需求分析 對於 excel 匯出,是一個很常見的需求。 最常見的解決方案就是使用 poi 直接同步匯出一個 excel 檔案。 客戶體驗 & 服務效能 客戶體驗 如果匯出的檔案比較大,比如幾十萬條資料,同步匯
java大檔案分塊上傳分享
先說說大檔案上傳種用的點以及原理,也希望各位指正。 思路以及大部分原始碼來自於 haohao123naa博主,我只是在他的基礎上進行完善點選開啟連結,在此表示感謝。 1.檔案分塊:一個超過幾個G的檔案上傳到伺服器,如果你只使用最簡單上傳、接收、處理、還能
將檔案儲存到資料庫(以二進位制流的形式)
Hibernate方法 HibernateUtils.java package yang.fang.hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import
C#將檔案上傳、下載(以二進位制流儲存到資料庫)
1、將檔案以二進位制流的格式寫入資料庫 首先獲得檔案路徑,然後將檔案以二進位制讀出儲存在一個二進位制陣列中,與資料庫建立連線,在SQL語句中將二進位制陣列賦值給相應的引數,完成向資料庫中寫入檔案的操作 /// 將檔案流寫入資料庫 /// </s
java使用poi把從資料庫中取出的資料寫入到excel檔案中並儲存到指定檔案路徑
有時候我們要把從資料庫中取出的資料匯入到excel中,使取到的資料看起來更加的直觀和方便,在java中如何實現取到的資料匯入到excel中呢?以下就是使用poi工具吧資料寫入excel檔案中的解決方法: Excel表格副檔名有.xlsx和.xls兩種格式 &n
clob-資料庫存取大文字檔案、二進位制圖片
將檔案中所有資料(即大文字)作為資料庫表某一列值存入: 程式碼涉及到IO及SQL的相關包: import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import j
檔案轉為二進位制流儲存在資料庫
資料庫在儲存資料時,有兩種格式,一種是以位元組儲存的,二進位制資料。 另一種是以字元形式儲存的。 資料庫要儲存二進位制資料,其資料庫的列的屬性必須是二進位制型別的,如MySQL中,型別為BINARY和VARBNARY的列以二進位制形式儲存資料。 因為二進位制一般都是位元組陣列,所
SQLserver C#將圖片以二進位制方式儲存到資料庫,再從資料庫讀出圖片
一 儲存到資料庫 1、建立資料表UserPhoto userID為varchar(50) 設定為標識列unique不能重複 alter table UserPhoto add unique(UserID) &n
檔案轉為二進位制流儲存在資料庫中的思路
資料庫在儲存資料時,有兩種格式,一種是以位元組儲存的,二進位制資料。 另一種是以字元形式儲存的。 資料庫要儲存二進位制資料,其資料庫的列的屬性必須是二進位制型別的,如MySQL中,型別為BINARY和VARBNARY的列以二進位制形式儲存資料。 因為二進位制一般
Flutter 如何以二進位制的方式儲存檔案
本文將介紹如何將二進位制檔案儲存至指定路徑,已經通過測試,測試的過程為使用下文的方式將sqlite資料庫儲存至專案資料夾內,可以正常的通過sqflite使用 //flutter資源路徑,需要提前配置好,保證可用,路徑的最後要標註檔名與字尾,例如file.db String