日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Java實(shí)現(xiàn)圖片上傳及數(shù)據(jù)庫(kù)存儲(chǔ)(java圖片數(shù)據(jù)庫(kù))

隨著互聯(lián)網(wǎng)的發(fā)展,圖片已經(jīng)成為傳遞信息的重要手段之一。在很多網(wǎng)站上,用戶需要上傳圖片來(lái)展示自己的信息或者分享一些內(nèi)容。而如何實(shí)現(xiàn)圖片的上傳和存儲(chǔ)則是一個(gè)非常關(guān)鍵的問(wèn)題。本文將介紹如何使用Java語(yǔ)言實(shí)現(xiàn)圖片上傳并存儲(chǔ)到數(shù)據(jù)庫(kù)中。

創(chuàng)新互聯(lián)建站于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元東光做網(wǎng)站,已為上家服務(wù),為東光各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

一、準(zhǔn)備工作

在實(shí)現(xiàn)圖片上傳和存儲(chǔ)之前,我們需要準(zhǔn)備好一些工具和環(huán)境。我們需要安裝Java開(kāi)發(fā)環(huán)境(JDK)和集成開(kāi)發(fā)環(huán)境(IDE),本文使用的是JDK8和Eclipse。我們需要使用Tomcat作為Web服務(wù)器。我們需要使用MySQL數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)上傳的圖片。

二、編寫(xiě)上傳頁(yè)面

我們需要編寫(xiě)一個(gè)上傳頁(yè)面,讓用戶可以選擇要上傳的圖片。在這個(gè)頁(yè)面中,需要使用HTML表單來(lái)實(shí)現(xiàn)文件上傳的功能。下面是一個(gè)簡(jiǎn)單的HTML表單代碼示例:

“`

上傳圖片

選擇文件:

“`

在這個(gè)表單中,我們使用了enctype=”multipart/form-data”來(lái)指定上傳的文件類型,并使用了input type=”file”來(lái)創(chuàng)建文件選擇框。表單的action屬性指向我們即將編寫(xiě)的Servlet。

三、編寫(xiě)Servlet

在前面的步驟中,我們已經(jīng)創(chuàng)建了一個(gè)上傳頁(yè)面,現(xiàn)在我們需要編寫(xiě)一個(gè)Servlet來(lái)處理由該頁(yè)面提交的文件。Servlet是Java Web開(kāi)發(fā)中的基本組成部分,它可以接收客戶端請(qǐng)求并返回響應(yīng)結(jié)果。

創(chuàng)建一個(gè)名為UploadServlet的Java類,并繼承HttpServlet。然后,我們需要重寫(xiě)doPost方法,用于處理POST請(qǐng)求。下面是一個(gè)簡(jiǎn)單的示例代碼:

“`

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.Part;

@WebServlet(“/uploadServlet”)

public class UploadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

// 上傳文件存儲(chǔ)目錄

private static final String UPLOAD_DIRECTORY = “upload”;

// 數(shù)據(jù)庫(kù)連接信息

private static final String JDBC_DRIVER = “com.mysql.jdbc.Driver”;

private static final String DB_URL = “jdbc:mysql://localhost:3306/test”;

private static final String DB_USER = “root”;

private static final String DB_PASSWORD = “”;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType(“text/html;charset=UTF-8”);

// 獲取上傳的文件

Part filePart = request.getPart(“file”);

String fileName = getFileName(filePart);

// 連接數(shù)據(jù)庫(kù)

Connection conn = null;

PreparedStatement stmt = null;

try {

Class.forName(JDBC_DRIVER);

conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);

// 插入數(shù)據(jù)庫(kù)

String sql = “INSERT INTO images (filename, filepath) values (?, ?)”;

stmt = conn.prepareStatement(sql);

stmt.setString(1, fileName);

stmt.setString(2, UPLOAD_DIRECTORY + File.separator + fileName);

stmt.executeUpdate();

// 保存文件到磁盤(pán)

String uploadPath = getServletContext().getRealPath(“”) + UPLOAD_DIRECTORY;

File uploadDir = new File(uploadPath);

if (!uploadDir.exists()) {

uploadDir.mkdir();

}

filePart.write(uploadPath + File.separator + fileName);

// 成功上傳

PrintWriter out = response.getWriter();

out.println(“文件上傳成功!”);

out.close();

} catch (ClassNotFoundException | SQLException ex) {

ex.printStackTrace();

response.sendRedirect(“error.html”); // 處理上傳失敗情況

} finally {

try {

if (stmt != null) {

stmt.close();

}

if (conn != null) {

conn.close();

}

} catch (SQLException ex) {

ex.printStackTrace();

}

}

}

private String getFileName(final Part part) {

final String partHeader = part.getHeader(“content-disposition”);

for (String content : partHeader.split(“;”)) {

if (content.trim().startsWith(“filename”)) {

return content.substring(content.indexOf(‘=’) + 1).trim().replace(“\””, “”);

}

}

return null;

}

}

“`

在Servlet中,我們首先獲取上傳的文件和文件名,然后連接MySQL數(shù)據(jù)庫(kù),將文件名和路徑插入到數(shù)據(jù)庫(kù)中。接著,我們將上傳的文件保存到web應(yīng)用根目錄下的upload文件夾中。

四、創(chuàng)建數(shù)據(jù)庫(kù)表

在我們的Java程序中,我們使用了MySQL數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)上傳的圖片。因此,在使用程序之前,我們需要?jiǎng)?chuàng)建一個(gè)名為“images”的表來(lái)存儲(chǔ)圖片信息。

“`

CREATE TABLE images (

id int(11) NOT NULL AUTO_INCREMENT,

filename varchar(255) DEFAULT NULL,

filepath varchar(255) DEFAULT NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

“`

在這個(gè)表中,我們定義了三個(gè)列,分別是id、filename和filepath。其中,id列是自動(dòng)遞增的主鍵。

五、測(cè)試上傳功能

現(xiàn)在,我們已經(jīng)完成了Java實(shí)現(xiàn)圖片上傳和數(shù)據(jù)庫(kù)存儲(chǔ)的所有步驟。接下來(lái),我們需要測(cè)試一下我們的程序是否可以正常工作。

我們需要將上傳頁(yè)面和Servlet部署到Tomcat服務(wù)器中。然后,我們啟動(dòng)Tomcat服務(wù)器,并在瀏覽器中訪問(wèn)上傳頁(yè)面。

選擇一個(gè)圖片文件并點(diǎn)擊上傳按鈕,我們會(huì)看到一個(gè)成功上傳的提示信息。同時(shí),這個(gè)圖片會(huì)被保存到我們的數(shù)據(jù)庫(kù)和web應(yīng)用根目錄下的upload文件夾中。

六、

在本文中,我們介紹了如何使用Java語(yǔ)言實(shí)現(xiàn)圖片上傳并存儲(chǔ)到數(shù)據(jù)庫(kù)中。通過(guò)使用這個(gè)程序,我們可以輕松地實(shí)現(xiàn)圖片上傳和存儲(chǔ),并且可以方便地獲取上傳的圖片信息。除此之外,我們還可以根據(jù)我們的需求修改這個(gè)程序,使其更加符合我們的實(shí)際情況。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!

Java web 問(wèn)題圖片怎么存儲(chǔ)到數(shù)據(jù)庫(kù)。

package shop.car.control;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.jsp.JspFactory;

import javax.servlet.jsp.PageContext;

import shop.car.model.GoodService;

import com.jspart.upload.SmartUpload;

import com.jspart.upload.SmartUploadException;

public class ImageInput extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

PrintWriter out = response.getWriter();

PageContext pageContext = null;

JspFactory jsp = null;

// 實(shí)例化上載bean

SmartUpload mySmartUpload = new SmartUpload();

jsp = JspFactory.getDefaultFactory();

pageContext = jsp.getPageContext(this, request, response, “”鉛虧謹(jǐn), true,

8192, true);

// 初始化

 mySmartUpload.initialize(pageContext);

// 設(shè)置上載的更大值

mySmartUpload.setMaxFileSize(500 * 1024 * 1024);

// 設(shè)定允許上傳的文件(通過(guò)擴(kuò)展名限制)

mySmartUpload.setAllowedFilesList(“jpg”);

// 上載文件

try {

mySmartUpload.upload();

} catch (SmartUploadException e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

}

int count = 0;

try {

count = mySmartUpload.save(“/upload”, SmartUpload.SAVE_VIRTUAL);

} catch (SmartUploadException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

out.println(count + “個(gè)文件上傳成功!
“);

out.println(“空凳TEST=” + mySmartUpload.getRequest().getParameter(“TEST”)

+ “”);

// 循環(huán)取得所有上載的文件

for (int i = 0; i 

// 取得上載的文件

com.jspart.upload.File myFile = mySmartUpload.getFiles().getFile(

i);

if (!myFile.isMissing()) {

// 取得上載的文件的文件名

String myFileName = myFile.getFileName();

// 取得不帶后綴的文件名

String suffix = myFileName.substring(0, myFileName

.lastIndexOf(‘.’));

// 取得后綴名

String ext = mySmartUpload.getFiles().getFile(0).getFileExt();

// 取得文件的大小

int fileSize = myFile.getSize();

// 保存路徑

String aa = request.getRealPath(request.getServletPath())

+ myFileName;

String trace = aa + myFileName;

String s=new String(trace.getBytes(“ISO”),”utf-8″);

// 取得別的參數(shù)

String explain = (String) mySmartUpload.getRequest()

.getParameter(“text”);

String send = (String) mySmartUpload.getRequest().getParameter(

“send”);

// 將文件保存在服務(wù)器端

try {

myFile.saveAs(trace, SmartUpload.SAVE_PHYSICAL);

} catch (SmartUploadException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 下面的是將上載的文件保存到數(shù)據(jù)庫(kù)中

// 將文件讀到流中

java.io.File file = new java.io.File(s);

java.io.FileInputStream fis = new java.io.FileInputStream(file);

out.println(file.length());

GoodService.addGoods(fis, file);

out.println((“上載成功!?。 ?.toString());

} else {

out.println((“上載失?。。?!”).toString());

}

}// 與前面的if對(duì)應(yīng)

out.flush();

out.close();

}

}

一般數(shù)據(jù)庫(kù)只存圖片的路徑。你可以在web下建一個(gè)目錄(images),然后把上傳的圖片放在里面。更好是用檔巧系統(tǒng)時(shí)間命名,避免沖突。

具體路徑是通過(guò)request.getRealPath(“images”)得到,讓后把圖片改名放進(jìn)去。

數(shù)據(jù)庫(kù)記住相對(duì)的路徑(1111.jpg)就可以了,在頁(yè)面逗搏可以—-pic—

Java 保存圖片到數(shù)據(jù)庫(kù)時(shí),為什么要對(duì)圖片進(jìn)行base64編碼

保密和字符處理

首先這是一種碼攔SB做扒模世法,圖片保存到數(shù)據(jù)庫(kù)這個(gè)很浪費(fèi)數(shù)據(jù)庫(kù)資源, 通常情況下圖片等文件都是用ftp服務(wù)器來(lái)存儲(chǔ)文件的春肢. 為什么要用base64進(jìn)行編碼是因?yàn)? base64會(huì)把文件這個(gè)文件轉(zhuǎn)換成字符串, base64編碼后得到的是一組字符串, 為什么要用blob類型, 因?yàn)檫@個(gè)類型可以存儲(chǔ)4GB數(shù)據(jù), 數(shù)據(jù)庫(kù)中普通的 varchar varchar2 text等類型都有長(zhǎng)度的限制

因?yàn)槎M(jìn)制數(shù)據(jù)無(wú)法使用弊塌鎮(zhèn)格式化的傳輸(如xml、json),而B(niǎo)ase64提供了剔除特殊字符(如

考慮一個(gè)接口可能會(huì)同時(shí)返回一個(gè)圖片的數(shù)據(jù),加上這個(gè)圖片的說(shuō)明,使用json返回的時(shí)候就必須要對(duì)圖片信息進(jìn)行Base64編碼。否則,你只能返回一個(gè)url,然后讓客戶端再使用這個(gè)url獲取圖片信息。

上面只是討論Base64的用處,至于存儲(chǔ)在數(shù)據(jù)庫(kù)是什么無(wú)所謂。本人還是傾向于原始的二進(jìn)制數(shù)據(jù),畢竟如果只有一個(gè)地方存儲(chǔ)這些數(shù)據(jù),那么保存原始數(shù)據(jù)能保證不會(huì)失去任何精度。

關(guān)于java 圖片 數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機(jī)被稱為香港虛擬空間/香港網(wǎng)站空間,或者簡(jiǎn)稱香港主機(jī)/香港空間。香港虛擬主機(jī)特點(diǎn)是免備案空間開(kāi)通就用, 創(chuàng)新互聯(lián)香港主機(jī)精選cn2+bgp線路訪問(wèn)快、穩(wěn)定!


當(dāng)前題目:Java實(shí)現(xiàn)圖片上傳及數(shù)據(jù)庫(kù)存儲(chǔ)(java圖片數(shù)據(jù)庫(kù))
網(wǎng)站鏈接:http://www.5511xx.com/article/coophgi.html