溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

上傳文件到數(shù)據(jù)庫和服務(wù)器

發(fā)布時(shí)間:2020-07-25 18:13:57 來源:網(wǎng)絡(luò) 閱讀:634 作者:建波李 欄目:建站服務(wù)器

上傳文件我們需要做三步。

①在頁面中能選擇文件上傳;

②能夠?qū)⒍M(jìn)制數(shù)據(jù)轉(zhuǎn)為byte數(shù)組,然后存入數(shù)據(jù)庫中,注意數(shù)據(jù)庫字段的類型;

③將文件保存到服務(wù)器

	@RequestMapping(value = "/upload")
	public void upload(UpLoadFile uploadFile) throws Exception {
		String msg = "上傳成功!";
		String originalFilename = uploadFile.getFile().getOriginalFilename();
		long size = uploadFile.getFile().getSize();
		String contentType = uploadFile.getFile().getContentType();
		String uploadRoot = "xxx";// 服務(wù)器根路徑
		String folder = "";
		folder = uploadRoot + folder;
		folder = StringUtils.replace(folder, "\\", "/");
		File dir = new File(folder);
		if (!dir.exists()) {
			if (!dir.mkdirs()) {
				throw new Exception("creating directory failed!");
			}
		}
		folder += "/" + "上傳的文件名";
		File outFile = new File(folder);

		byte[] appwar = uploadFile.getFile().getBytes();// 文件轉(zhuǎn)byte 字節(jié)類型
		// me.setAppwar(appwar);//MySQL數(shù)據(jù)庫中用longblob類型來存儲,最大單個(gè)存儲文件為4G
		// this.mobileverDao.insert(me);
		try {
			uploadFile.getFile().transferTo(outFile);// 文件上傳到服務(wù)器的地址
			//使用transferTo(dest)方法將上傳文件寫到服務(wù)器上指定的文件。
		} catch (IllegalStateException e) {
			throw new Exception("upload file is error!\n" + e.getMessage());
		}
		 //上傳成功
	}


文件已字節(jié)形式存儲到數(shù)據(jù)庫中。

MySQL數(shù)據(jù)庫中BLOB類型分為以下四種

  • TINYBLOB可變長二進(jìn)制數(shù)據(jù),最多255個(gè)字節(jié)

  • BLOB可變長二進(jìn)制數(shù)據(jù),最多2的16次方-1個(gè)字節(jié) 即64K

  • MEDIUMBLOB可變長二進(jìn)制數(shù)據(jù),最多2的24次方-1個(gè)字節(jié) 即16M

  • LONGBLOB可變長二進(jìn)制數(shù)據(jù),最多2的32次方-1個(gè)字節(jié) 即4G

  • 這幾個(gè)類型之間的唯一區(qū)別是在存儲文件的最大大小不同。 

Oralce數(shù)據(jù)庫中大數(shù)據(jù)類型分為BLOB和BFILE 兩種,其中BLOB分為以下三種
BLOB全稱為二進(jìn)制大型對象(Binary Large Object)。它用于存儲數(shù)據(jù)庫中的大型二進(jìn)制對象??纱鎯Φ淖畲蟠笮?G字節(jié)CLOB CLOB全稱為字符大型對象(Character Large Object)。它與LONG數(shù)據(jù)類型類似,只不過CLOB用于存儲數(shù)據(jù)庫中的大型單字節(jié)字符數(shù)據(jù)塊,不支持寬度不等的字符集??纱鎯Φ淖畲蟠笮?G字節(jié)NCLOB 基于國家語言字符集的NCLOB數(shù)據(jù)類型用于存儲數(shù)據(jù)庫中的固定寬度單字節(jié)或多字節(jié)字符的大型數(shù)據(jù)塊,不支持寬度不等的字符集??纱鎯Φ淖畲蟠笮?G字節(jié)
BFILE 當(dāng)大型二進(jìn)制對象的大小大與4G字節(jié)時(shí),BFILE數(shù)據(jù)類型用于將其存儲在數(shù)據(jù)庫外的操作系統(tǒng)文件中;當(dāng)其大小不足4G字節(jié)時(shí),則將其存儲在數(shù)據(jù)庫內(nèi)部的操作系統(tǒng)文件中,BFILE列存儲文件定位程序,此定位程序指向服務(wù)器上的大型二進(jìn)制文件。




向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI