㈠ java實現圖片上傳至伺服器並顯示,如何做希望要具體的代碼實現
很簡單。
可以手寫IO讀寫(有點麻煩)。
怕麻煩的話使用FileUpload組件 在servlet里doPost嵌入一下代碼
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out=response.getWriter();
//設置保存上傳文件的目錄
String uploadDir =getServletContext().getRealPath("/up");
System.out.println(uploadDir);
if (uploadDir == null)
{
out.println("無法訪問存儲目錄!");
return;
}
//根據路徑創建一個文件
File fUploadDir = new File(uploadDir);
if(!fUploadDir.exists()){
if(!fUploadDir.mkdir())//如果UP目錄不存在 創建一個 不能創建輸出...
{
out.println("無法創建存儲目錄!");
return;
}
}
if (!DiskFileUpload.isMultipartContent(request))
{
out.println("只能處理multipart/form-data類型的數據!");
return ;
}
DiskFileUpload fu = new DiskFileUpload();
//最多上傳200M數據
fu.setSizeMax(1024 * 1024 * 200);
//超過1M的欄位數據採用臨時文件緩存
fu.setSizeThreshold(1024 * 1024);
//採用默認的臨時文件存儲位置
//fu.setRepositoryPath(...);
//設置上傳的普通欄位的名稱和文件欄位的文件名所採用的字元集編碼
fu.setHeaderEncoding("gb2312");
//得到所有表單欄位對象的集合
List fileItems = null;
try
{
fileItems = fu.parseRequest(request);//解析request對象中上傳的文件
}
catch (FileUploadException e)
{
out.println("解析數據時出現如下問題:");
e.printStackTrace(out);
return;
}
//處理每個表單欄位
Iterator i = fileItems.iterator();
while (i.hasNext())
{
FileItem fi = (FileItem) i.next();
if (fi.isFormField()){
String content = fi.getString("GB2312");
String fieldName = fi.getFieldName();
request.setAttribute(fieldName,content);
}else{
try
{
String pathSrc = fi.getName();
if(pathSrc.trim().equals("")){
continue;
}
int start = pathSrc.lastIndexOf('\\');
String fileName = pathSrc.substring(start + 1);
File pathDest = new File(uploadDir, fileName);
fi.write(pathDest);
String fieldName = fi.getFieldName();
request.setAttribute(fieldName, fileName);
}catch (Exception e){
out.println("存儲文件時出現如下問題:");
e.printStackTrace(out);
return;
}
finally //總是立即刪除保存表單欄位內容的臨時文件
{
fi.delete();
}
}
}
注意 JSP頁面的form要加enctype="multipart/form-data" 屬性, 提交的時候要向伺服器說明一下 此頁麵包含文件。
如果 還是麻煩,乾脆使用Struts 的上傳組件 他對FileUpload又做了封裝,使用起來更傻瓜化,很容易掌握。
-----------------------------
以上回答,如有不明白可以聯系我。
㈡ jsp如何將圖片上傳到伺服器某個文件夾裡面,而路徑存到資料庫中!!請教!!!
用smartupload 控制項來完成 你網路下一大堆的例子,算了我幫你網路,不然你分不給我,要記的給我呀,至於保存在資料庫中,你可以用年月日時分秒這樣的格式生成一個文件存放目錄,將圖片的路徑保存到資料庫中
<%@ page language="java" contentType="text/html; charset=GB2312" pageEncoding="GB2312"%>
<%@ page language="java" import="java.io.*"%>
<%@ page language="java" import="com.jspsmart.upload.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>文件上傳Bean</title>
</head>
<body>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<FORM METHOD="POST" ACTION="Ex7_7.jsp" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE2" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE3" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE4" SIZE="50"><BR>
<INPUT TYPE="SUBMIT" VALUE="Upload">
</FORM>
<%
//上傳文件計數
int count=0;
//初始化,傳入pageContext內置變數
mySmartUpload.initialize(pageContext);
//允許上傳的文件類型
mySmartUpload.setAllowedFilesList("htm,html,txt,jar,");
//或者設定拒絕上傳的文件類型
// mySmartUpload.setDeniedFilesList("exe,bat,jsp");
// 拒絕的物理路徑
// mySmartUpload.setDenyPhysicalPath(true);
// 設置文件最大為 50000 bytes
mySmartUpload.setMaxFileSize(50000);
// 允許一次最多上載文件大小不超過 200000 bytes
// mySmartUpload.setTotalMaxFileSize(200000);
try {
// 上傳操作
mySmartUpload.upload();
//以原文件名存儲在web伺服器虛擬路徑下
//返回上傳的文件數
count = mySmartUpload.save("/Upload", mySmartUpload.SAVE_VIRTUAL);
} catch (Exception e){
//輸出意外信息
out.println("<b>Wrong selection : </b>" + e.toString());
}
// 顯示文件上載數
out.println(count + " file(s) uploaded.");
%>
</body>
</html>
㈢ 通過JSP怎樣上傳圖片到伺服器
1.限制文件上傳類型只能是圖片
function checkFileType(name,file){
var extArray = new Array(".doc",".docx");
var allowSubmit = false;
if (!file){
return;
}
while (file.indexOf("\\") != -1){
file = file.slice(file.indexOf("\\") + 1);
}
var ext = file.slice(file.indexOf(".")).toLowerCase();
for (var i = 0; i < extArray.length; i++) {
if (extArray[i] == ext){
allowSubmit = true;
break;
}
}
if(!allowSubmit){
alert("只能上傳以下格式的文件:"+ (extArray.join("")) + "\n請重新選擇再上傳.");
document.getElementById(name).value = "";
}
}
其中:extArray是要求文件類型。可自行定義。
2.引入jQuery外部文件
jquery-2.1.4.min.js
3.編寫js代碼
$(function () {
$('#txtfilePath1').uploadReview({
width: 350,
height: 350,
target: '#uploadReview1_content'
});
});
其中:txtfilePath1是input:file。width,height是預覽圖片的寬度和高度。target是顯示預覽圖片的位置。
4.編寫jsp頁面代碼
<body>
<input type="text" class="yourClassName" name="filePath1" id="filePath1"/>
<input type="file" id="txtfilePath1" name="txtfilePath1" style="display:none;">
<input type="button" onclick="txtfilePath1.click()" id="fileup1" name="fileup1" class="searchThing"value="上傳">
</body>
註: 這個是很久以前在網上看到的,就整理了下來,但是這么久都沒用過,所以也沒調試過,你自己試一試研究研究, 再來網上很多博客里,他們寫的很詳細的,可以去看看
㈣ 請問jsp頁面如何上傳照片到伺服器呢,
這個是我以前用的一個用jsp上傳的,servlet是一樣的,你可以自己修改下。
普通參數也是可以接受的
在jsp頁面中你需要導入jsmart的中文jar包,如果你需要的話可以密我,我郵箱發給你
上傳頁面upload.html
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<form action="uploadfile.jsp" method="post" enctype="multipart/form-data">
<table width="380" border="0" align="center" cellpadding="0" cellspacing="0" style="font-size:12px;">
<tr>
<td height="40" align="right">節目名稱:</td>
<td><input type="text" style="WIDTH: 210px" id="mcdb_content" name="mcdb_content" /></td>
</tr>
<td height="40" align="right">節目鏈接地址:</td>
<td><input type="text" style="WIDTH: 210px" id="linkUrl" name="linkUrl" /></td>
</tr>
<tr>
<td height="40" align="right" valign="middle">
上傳焦點圖片:</td>
<td><input type="file" name="upfile" id="file"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>
處理上傳文件的頁面uploadfile.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.jspsmart.upload.*;" %>
<%
SmartUpload mySmartUpload =new SmartUpload();
//上傳文件的限制大小
long file_size_max=4000000;
String fileName2="",ext="",testvar="";
//應保證在根目錄中有此目錄的存在(也就是說需要自己建立相應的文件夾)
String url="/upload/";
//初始化
mySmartUpload.initialize(pageContext);
//只允許上載此類文件
try {
mySmartUpload.setAllowedFilesList("bmp,jpg,tiff,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw");//此處的文件格式可以根據需要自己修改
//上載文件
mySmartUpload.upload();
} catch (Exception e){
//上傳類型出現異常
%>
<SCRIPT language=javascript>
alert("只允許上傳圖片");
window.location='upload.html';
</script>
<%
}
try{
//得到上傳的文件
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
//如果文件獲得為空
if (myFile.isMissing()){%>
<SCRIPT language=javascript>
alert("請先選擇要上傳的文件");
window.location='upload.html';
</script>
<%}
//得到了上傳的文件
else{
//String myFileName=myFile.getFileName(); //取得上載的文件的文件名
ext= myFile.getFileExt(); //取得後綴名
int file_size=myFile.getSize(); //取得文件的大小
String saveurl="";
//如果文件沒有超過限制上傳的大小
if(file_size<file_size_max){
//更改文件名,取得當前上傳時間的毫秒數值
Calendar calendar = Calendar.getInstance();
String filename = String.valueOf(calendar.getTimeInMillis());
saveurl=application.getRealPath("/")+url;
String filenamea="";
//保存路徑
saveurl+=filename+"."+ext;
filenamea+=filename+"."+ext;
//接受普通參數
Request req = mySmartUpload.getRequest();
String bt=(String)req.getParameter("mcdb_content");
String linkurl = (String)req.getParameter("linkUrl");
myFile.saveAs(saveurl,SmartUpload.SAVE_PHYSICAL);
out.print(filenamea);
}
}
}catch (Exception e){
out.print(e.toString());
}
%>
㈤ JSP頁面上傳圖片到資料庫怎麼實現更簡單
一般來說有兩種形式
1.file上傳到伺服器,然後將地址保存到資料庫。
2.將文件改為base64格式的字元串,將字元串存到資料庫。
㈥ jsp如何將圖片上傳到伺服器某個文件夾裡面,而路徑存到mysql資料庫中,然後將資料庫中的圖片顯示到另一頁面
你把圖片存到資料庫?還是只存的圖片名? 用smartupload 控制項來完成 你{ // 上傳操作 mySmartUpload.upload(); //以原文件名存儲在web伺服器虛擬
㈦ java編程:怎麼用JSP(javabean)上傳一張圖片到伺服器的指定文件夾呢
先導smartupload jar包!在寫form表單<input tyle="file" enctype="multipart/form-data" method="post">enctype和method別寫錯了!
寫一個簡單的吧!
<%page import="com.jspsmart.upload.*"%>
<%
SmartUpload su=new SmartUpload ();//初始化SmartUpload對象
try{ //捕獲他可能出現的異常
su.upload();//執行上傳
}catch(Exception ex){
ex.printStackTrace;
}
File file=su.getFile().getFile(0); //(得到單個的上傳文件的信息)這里得到的File對象是你到的jar包里的com.jspsmart.upload.File類型 別寫成IO 裡面的File了
String filepath="upload\\"; //在這之前要在你所建項目的目錄下單建一個upload文件夾
filepath+=file.getFileName();
file.saveAs(filepath,SmartUpload.SAVE-VIRTUAL);
不知道是否建了與它相對應的資料庫表啊?
不懂得再玩吧!
%>
㈧ 在servlet和jsp裡面怎麼上傳圖片到伺服器啊
在 servlet 的doGet 或者doPost 裡面寫
FileInputStream fis=new FileInputStream(new File("圖片路徑"));
int count=fis.available();
byte[] b=new byte[count];
fis.read(b,0,count);
Pic m=new Pic();
m.setPicture(b);
PicDAO m=new PicDAO();
m.save(m);
m.getSession().beginTransaction().commit();
Pic 是Hibernate的PoJo類
㈨ jsp如何上傳圖片到資料庫
jsp上傳圖片到數據,在資料庫中有一種類型就是blob存儲類型,就是用於儲存二進制的。在java.sql裡面的PreparedStatment有個setBlob()方法存入資料庫,還有ResultSet里的getBlob()就是讀取,詳情你可以看JDBC Blob如何使用。
在jsp里上傳圖片很少用上述方式存儲到資料庫中,一般是將圖片上傳到伺服器項目目錄文件夾中,然後資料庫中保存該圖片文件的地址,如/item/upload/images/我上傳的圖片.jpg
㈩ java實現圖片上傳至伺服器並顯示,如何做
給你段代碼,是用來在ie上顯示圖片的(servlet):
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
File file = new File(getServletContext().getRealPath("/")+"out"+"/"+id+".gif");
response.setCharacterEncoding("gb2312");
response.setContentType("doc");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(file.getName().getBytes("gb2312"),"iso8859-1"));
System.out.println(new String(file.getName().getBytes("gb2312"),"gb2312"));
OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis = new FileInputStream(file);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b))!=-1)
{
output.write(b, 0, i);
}
output.write(b, 0, b.length);
output.flush();
response.flushBuffer();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(fis != null)
{
fis.close();
fis = null;
}
if(output != null)
{
output.close();
output = null;
}
}
}
這個程序的功能是根據傳入的文件名(id),來為瀏覽器返回圖片流,顯示在<img>標簽里
標簽的格式寫成如下:
<img src="http://localhost:8080/app/preview?id=111 "/><br/>
顯示的是111.gif這個圖片
你上面的問題:
1.我覺得你的第二個辦法是對的,我們也是這樣做的,需要的是把資料庫的記錄id號傳進servlet,然後讀取這條記錄中的路徑信息,生成流以後返回就是了
關於上傳文件的問題,我記得java中應該專門有個負責文件上傳的類,你調用就行了,上傳後存儲在指定的目錄里,以實體文件的形式存放
你可以參考這個:
http://blog.csdn.net/arielxp/archive/2004/09/28/119592.aspx
回復:
1.是的,在response中寫入流就行了
2.是發到servlet中的,我們一般都是寫成servlet,短小精悍,使用起來方便,struts應該也可以,只是我沒有試過,恩,你理解的很對