日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

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

創(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)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元東光做網(wǎng)站,已為上家服務(wù),為東光各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

一、準(zhǔn)備工作

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

二、編寫上傳頁面

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

“`

上傳圖片

選擇文件:

“`

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

三、編寫Servlet

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

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

“`

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;

// 上傳文件存儲目錄

private static final String UPLOAD_DIRECTORY = “upload”;

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

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ù)庫

Connection conn = null;

PreparedStatement stmt = null;

try {

Class.forName(JDBC_DRIVER);

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

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

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();

// 保存文件到磁盤

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ù)庫,將文件名和路徑插入到數(shù)據(jù)庫中。接著,我們將上傳的文件保存到web應(yīng)用根目錄下的upload文件夾中。

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

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

“`

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;

“`

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

五、測試上傳功能

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

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

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

六、

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

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

Java web 問題圖片怎么存儲到數(shù)據(jù)庫。

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è)定允許上傳的文件(通過擴(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 + “個文件上傳成功!
“);

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ù)庫中

// 將文件讀到流中

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對應(yīng)

out.flush();

out.close();

}

}

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

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

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

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

保密和字符處理

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

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

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

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

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

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


網(wǎng)頁標(biāo)題:Java實(shí)現(xiàn)圖片上傳及數(shù)據(jù)庫存儲(java圖片數(shù)據(jù)庫)
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/coophgi.html