『壹』 關於java獲取圖片路徑問題
但是編譯的時候報空指針找不到圖片 --- 你把相應錯誤信息貼一下?
為什麼不是全路徑,而是D:axx.png --- 這不是全路徑是什麼
method方法抄裡面寫後台的控制類上傳方法,方法裡面能夠獲取該文件,然後以流的方式寫入到指定文件夾下的某個文件中。
參考下這個網頁鏈接
<form method="post" action="/TomcatTest/UploadServlet" enctype="multipart/form-data">
enctype="multipart/form-data" 這個必須要寫,action後台接收的方法,文件保存路徑在控制器中可以自己隨便指定。
『叄』 java圖片路徑問題
<img src="111.png" /> 引用的是同一目錄下的,你上面那段代碼根本就沒輸出到那個目錄當然找不到了。 對於一個項目來說圖片有個專有的文件夾存放,比如在WebRoot的imageFolder下,那麼你在輸出流寫圖片的時候要指定好這個相對路徑,然後頁面上用<img src="../imageFolder/111.png" />
通常來說解決方案是這樣的:以一個圖片上傳的例子為例,首先會在xml文件中配置好上傳文件的絕對路徑(例如C:/XXDX/XX這樣,將來部署到伺服器上時,修改配置文件路徑就好了)然後比如我們上傳的圖片都是用輸入流寫到xx/xx/war/upload中 (我看你後增加的代碼中沒有flush(),是不對的) 然後在頁面jsp中用/upload/xxx.png取值,之所以這么取是因為「/」是war根目錄,當然你要是用"../"那種方式你要查明白你現在的目錄級別。
『肆』 在Java項目中上傳圖片時如何使上傳的圖片自動保存到指定路徑
用struts也可以實現 多文件上傳
下面是我寫的代碼,
參數中有要保存的目錄
作為參考!
/*文件目錄*/
public static String [] fileArray={
"logo.png",
"index.swf",
"OEMInfo.txt",
"favicon.ico"};
/**
* @author Caoshun
* @see 接收並保存文件
* */
public static void receiveAndSaveAllFileByPath(ActionForm form,String rootPath1,String rootPath2){
String fileName="";
//獲取表單中的文件資源
Hashtable<Object, Object> files = form.getMultipartRequestHandler().getFileElements();
//遍歷文件,並且循環保存
//當前處理文件序號
int file_num=1;
for (Enumeration<Object> e = files.keys(); e.hasMoreElements();) {
/*根據處理的當前文件下標,確定文件名*/
fileName=fileArray[file_num-1];
FormFile file = (FormFile) files.get((String) e.nextElement());
if (file != null && file.getFileSize() > 0) {
try {
//使用formfile.getInputStream()來獲取一個文件的輸入流進行保存。
//文件名
//String fileName = file.getFileName();
//System.out.println("debug in AddEnterpriceAction.java on line 152 fileName is : "+fileName);
//文件大小
//int fileSize = file.getFileSize();
//文件流
InputStream is = file.getInputStream();
//將輸入流保存到文件
//String rootPath = this.servlet.getServletContext().getRealPath("files");
//往cn中寫入
File rf = new File(rootPath1);
FileOutputStream fos = null;
fos = new FileOutputStream(new File(rf, fileName));
byte[] b = new byte[10240];
int real = 0;
real = is.read(b);
while (real > 0) {
fos.write(b, 0, real);
real = is.read(b);
}
//往en中寫入
File rf2 = new File(rootPath2);
InputStream is2 = file.getInputStream();
FileOutputStream fos2 = null;
fos2 = new FileOutputStream(new File(rf2, fileName));
byte[] b2 = new byte[10240];
int real2 = 0;
real2 = is2.read(b2);
while (real2 > 0) {
fos2.write(b2, 0, real2);
real2 = is2.read(b2);
}
//關閉文件流
fos.close();
is.close();
fos2.close();
is2.close();
} catch (RuntimeException e1) {
e1.printStackTrace();
} catch (Exception ee) {
ee.printStackTrace();
}
file.destroy();
}
file_num++;
}
}
『伍』 java存圖片路徑到mysql
|mysql> create table t_test(
-> id int primary key,
-> filepath varchar(256));
mysql> insert into t_test values(
-> 1, 'd:\\abc');
mysql> select * from t_test;
+----+----------+
| id | filepath |
+----+----------+
| 1 | d:\abc |
+----+----------+
把如」d:\abc"中的路徑中的\換成兩個\是可以的
但在java中寫的時回候要注意這樣寫:答
"insert into t_test values(1, 'd:\\\\abc')"
『陸』 java如何將圖片保存在資料庫中
一般都是這樣的,就是在你伺服器有一個專門放置圖片的文件夾,然後資料庫保存的是你伺服器圖片的路徑。需要用的時候就去資料庫裡面取路徑。得到路徑以後你想怎麼處理圖片是你的事情了。
至於如何去資料庫取路徑這個就是簡單的db操作。
載入驅動類:
Class.forName(DBDriver);
獲取連接:
Connection conn = DriverManager.getConnection(url,username,password);
創建操作對象:
PreparedStatement stmt = con.prepareStatement(sql);
執行操作:
ResultSet rs = stmt.executeQuery();
遍歷結果:
List list = new ArrayList();
while(rs.next()){
//具體操作,通常用rs.getString(name)取值
Image img = new Image();//圖片類對應你資料庫中圖片表格
img.setSrc(rs.getString("src"));//假設你資料庫中image表中圖片地址欄位是src
list.add(img);
}
記得關閉資源:
rs.close();
stmt.close();
con.close();
看你的意思是已經取出來了不知道怎麼顯示:
你取出來之後可以把圖片放在一個list裡面然後去頁面上遍歷這個list
<c:forEach var="chakan1" items="list">
<tr>
<td>
<img src="${chakan1.src}"/>
</td>
</tr>
</c:forEach>
大致應該是這樣
『柒』 java如何存儲圖片到資料庫,存路徑和二進制是什麼意思
一種方法是把圖像文件本身放在某個文件夾里,然後在數據表裡設一個「路徑「欄位,類型為字元串,存圖像的路徑(比如「D:\files\xxx.jpg」)。
另一種方法是,把圖像文件本身,作為一個巨大的二進制數據,放在資料庫中;具體方法是,數據表中設置一個」數據「欄位,類型是二進制數據,存放圖像本體。