servlet上傳下載
① jsp 如何實現文件上傳和下載功能
上傳:
MyjspForm mf = (MyjspForm) form;// TODO Auto-generated method stub
FormFile fname=mf.getFname();
byte [] fn = fname.getFileData();
OutputStream out = new FileOutputStream("D:\"+fname.getFileName());
Date date = new Date();
String title = fname.getFileName();
String url = "d:\"+fname.getFileName();
Upload ul = new Upload();
ul.setDate(date);
ul.setTitle(title);
ul.setUrl(url);
UploadDAO uld = new UploadDAO();
uld.save(ul);
out.write(fn);
out.close();
下載:
DownloadForm downloadForm = (DownloadForm)form;
String fname = request.getParameter("furl");
FileInputStream fi = new FileInputStream(fname);
byte[] bt = new byte[fi.available()];
fi.read(bt);
//設置文件是下載還是打開以及打開的方式msdownload表示下載;設置字湖集,//主要是解決文件中的中文信息
response.setContentType("application/msdownload;charset=gbk");
//文件下載後的默認保存名及打開方式
String contentDisposition = "attachment; filename=" + "java.txt";
response.setHeader("Content-Disposition",contentDisposition);
//設置下載長度
response.setContentLength(bt.length);
ServletOutputStream sos = response.getOutputStream();
sos.write(bt);
return null;
② jsp+servlet 怎麼實現文件上傳
你要做文件上傳吧 form表單里一定要設置這兩個值enctype="multipart/form-data" method="post"
上傳成功後會在tomcat里有那個文件 ,至於你說的要獲取io流。那就需要找到那個文件給你寫一下偽碼吧:
//獲得上傳文件的路徑
String path = getServletContext().getRealPath(webpath);
File file = new File(path);
file.getParentFile().mkdirs();
file.createNewFile();
// 獲得流
InputStream in = item.getInputStream();
OutputStream out = new FileOutputStream(file);
不懂的再問我!
建議你用個上傳組件,fileupload什麼的
③ 在servlet中怎樣上傳文件
//新建一個Smartupload對象
SmartUpload
su=new
SmartUpload();
//上傳初始化
su.initialize(pageContext);
//設定上傳限度
//1.限定每個上傳文件的最大長度
//su.setMaxFileSize(100000);
//2.限制總上傳數據的長度。
//su.setTotalMaxFileSize(20000);
//3.設定允許上傳的文件(通過擴展名限制),僅允許doc,txt文件。
//su.setAllowFilesList("doc,text");
//4.設定禁止上傳的文件(通過擴展名限制),禁止上傳帶有exe,bat,jsp,htm,html擴展名的文件或沒有擴展名的文件
//su.setDeniedDilesList("exe,bat,jsp,html,htm,,");
//上傳文件
su.upload();
//將上傳文件全部保存到指定目錄
int
count=su.save("/upload");
out.println(count+"個上傳文件成功!<br>");
//利用Request對象獲取參數之值
out.println("test="+su.getRequest().getParameter("test")+"<br><br>");
//逐一提取上傳文件信息,同時可保存文件。
for(int
i=0;i<su.getFiles().getCount();i++)
{
com.jspsmart.upload.File
file=su.getFiles().getFile(i);
//若文件不存在則繼續
if(file.isMissing())
continue;
//顯示當前文件信息
out.println("<table
border=1>");
out.println("<tr><td>表單項名(FiledName)</td><td>"+file.getFieldName()+"</tr></tr>");
out.println("<tr><td>文件長度(Size)</td><td>"+file.getSize()+"</td><td>");
out.println("<tr><td>文件名(FileName)</td><td>"+file.getFileName()+"</tr></tr>");
out.println("<tr><td>文件擴展名(FiledExt)</td><td>"+file.getFileExt()+"</tr></tr>");
out.println("<tr><td>文件全名(FiledPathName)</td><td>"+file.getFilePathName()+"</tr></tr>");
out.println("</table><br>");
//將文件另存
//file.saveAs("/upload/"+myFile.getFileName());
//另存到以web應用程序的根目錄為文件根目錄的目錄下
//file.saveAs("/upload/"+myFile.getFileName(),su.SAVE_VIRTUAL);
//另存到操作系統的根目錄為文件根目錄的目錄下
//file.safeAs("c://temp//"+myFile.getFileName(),su.SAVE_PHYSICAL);
}
上面就是了。。。。祝你好運哈!
④ 怎麼用servlet上傳文件到該WEB項目的WebRoot的某文件夾下啊是相對路徑不是絕對路徑,請問怎麼做啊
這個問題我以前也有過,但後來我明白了,雖然說JSP能編譯為Servlet但是,這只是web容器的功勞。你要是邊幾個項目就會明白。好的WEB程序里。JSP和HTML文件的編寫是一樣的。除了一些必要的處理代碼塊。但是很少有。一般處理請求的都放在了servlet里,現在Struts很好的封裝了Servlet這一層,成為了servelt的專業框架。用來處理用戶的請求。但有必要的時候,我們還必須自己去寫Servlet,比如過濾器,再比如監聽器等。
所以說,雖然JSP能編譯為Servlet但並不代表他就能替代Servlet。一般的web項目盡量將顯示代碼放進jsp中
而處理代碼放進Servlet中。以增加可讀性,可拓展性。可維護性。可能我說的有點深奧,但是你以後去做項目時就會明白了。
JSP是絕不能替代Servlet的。希望對你有幫助。
⑤ tomcat做上傳下載伺服器相關配置
就是servlet 的問題,原來 tomcat 下 web.xml 的servlet配置是:
<servlet>
<servlet-name>testServlet</servlet-name>
<servlet-class>com.test.servlet.testServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>testServlet</servlet-name>
<url-pattern>/servlet/testServlet</url-pattern>
</servlet-mapping>
頁面form 的action="/servlet/testServlet"
resin 的配置如下:
<servlet>
<servlet-name>testServlet</servlet-name>
<servlet-class>com.test.servlet.testServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>testServlet</servlet-name>
<url-pattern>/testServlet</url-pattern>
</servlet-mapping>
頁面form 的action="testServlet"
還有resin 和tomcat 內部處理字元集頁不太一樣!
暫時還沒有發現別的問題!
⑥ 怎樣使用javaweb實現上傳視頻和下載功能
文件上傳就是將客戶端資源,通過網路傳遞到伺服器端。
因為文件數據比較大,必須通過文件上傳才可以完成將數據保存到資料庫端的操作。
文件上傳的本質就是IO流操作。
演示:文件上傳應該如何操作?
瀏覽器端:
1.method=post 只有post才可以攜帶大數據
2.必須使用<input type='file' name='f'>要有name屬性
3.encType="multipart/form-data"
伺服器端:
request對象是用於獲取請求信息。
它有一個方法 getInputStream(); 可以獲取一個位元組輸入流,通過這個流,可以讀取到
所有的請求正文信息.
文件上傳原理:
瀏覽器端注意上述三件事,在伺服器端通過流將數據讀取到,在對數據進行解析.
將上傳文件內容得到,保存在伺服器端,就完成了文件上傳。
注意:在實際開發中,不需要我們進行數據解析,完成文件上傳。因為我們會使用文件上傳的工具,它們已經封裝好的,提供API,只要調用它們的API就可以完成文件上傳操作.我們使用的commons-fileupload,它是apache提供的一套開源免費的文件上傳工具。
代碼演示文件上傳的原理:
在WebRoot下新建upload1.jsp
[html]view plain
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<title>MyJSP'index.jsp'startingpage</title>
</head>
<body>
<!--encType默認是application/x-www-form-urlencoded-->
<formaction="${pageContext.request.contextPath}/upload1"
method="POST"enctype="multipart/form-data">
<inputtype="text"name="content"><br>
<inputtype="file"name="f"><br><inputtype="submit"
value="上傳">
</form>
</body>
</html>
packagecn.itcast.web.servlet;
importjava.io.IOException;
importjava.io.InputStream;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//System.out.println("upload1servlet......");
//通過request獲取一個位元組輸入流,將所有的請求正文信息讀取到,列印到控制台
InputStreamis=request.getInputStream();
byte[]b=newbyte[1024];
intlen=-1;
while((len=is.read(b))!=-1){
System.out.println(newString(b,0,len));
}
is.close();
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
在web頁面中添加上傳輸入項。
在Servlet中讀取上傳文件的數據,並保存在伺服器硬碟中。
1、必須設置input輸入項的name屬性,否則瀏覽器將不會發送上傳文件的數據。
2、必須把form的encType屬性設為multipart/form-data 設置該值後,瀏覽器在上傳文件時,並把文件數據附帶在http請求消息體內,並使用MIME協議對上傳的文件進行描述,以方便接收方對上傳數據進行解析和處理。
3、表單的提交方式要設置為post。
Request對象提供了一個getInputStream方法,通過這個方法可以讀取到客戶端提交過來的數據。但由於用戶可能會同時上傳多個文件,在servlet端編程直接讀取上傳數據,並分別解析出相應的文件數據是一項非常麻煩的工作,示例。
為方便用戶處理文件上傳數據,Apache 開源組織提供了一個用來處理表單文件上傳的一個開源組件( Commons-fileupload ),該組件性能優異,並且其API使用極其簡單,可以讓開發人員輕松實現web文件上傳功能,因此在web開發中實現文件上傳功能,通常使用Commons-fileupload組件實現。
使用Commons-fileupload組件實現文件上傳,需要導入該組件相應支撐jar包:Commons-fileupload和commons-io。commo-io不屬於文件上傳組件的開發jar文件,但Commons-fileupload組件從1.1版本開始,它工作時需要commons-io包的支持。
新建Upload1Servlet 路徑:/upload1
[java]view plain
在瀏覽器端訪問信息如下:
文件上傳概述
實現web開發中的文件上傳功能,需要完成如下二步操作:
如何在web頁面中添加上傳輸入項?
<input type="file">標簽用於在web頁面中添加文件上傳輸入項,設置文件上傳輸入項時注意:
如何在Servlet中讀取文件上傳數據,並保存到本地硬碟中?
⑦ java用org.apache.commons.fileupload.servlet.ServletFileUpload上傳文件,限制上傳文件大小。急在線等。
eclipse項目包含build文件夾,myeclipse沒有這個文件夾,你在import的時候常規general下有4個選項,archive file,exists project,file system,prefrences(檔案文件或壓縮檔案,現存項目,文件系統,首選項),一般完整項目使用第二個,但是如果別人上傳的是文件,就使用文件系統導入,看看項目是什麼工具做的,再根據具體情況導入
⑧ 用jsp、java實現上傳圖片,保存到資料庫,從資料庫中提取,顯示到頁面 這四步 我想問第一步,怎麼上傳圖片
用jspSmartUpload組件來實現,用jsp+servlet在Servlet里實現的代碼:
PrintWriter out = response.getWriter();
int count = 0;
// 實例化上傳控制項對象
SmartUpload su = new SmartUpload();
// 初始化操作
su.initialize(config, request, response);
// 設置上傳文件最大位元組數
su.setTotalMaxFileSize(100000);
//
try {
//禁止上傳指定擴展名的文件
su.setDeniedFilesList("ext,bat,jsp");
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
// 上傳文件到伺服器
su.upload();
File fileup = new File(request.getRealPath("upload"));
if(!fileup.exists()){
// 創建目錄
fileup.mkdir();
}
// 處理多個文件的上傳
for(int i = 0;i < su.getFiles().getCount();i++){
com.jspsmart.upload.File file = su.getFiles().getFile(i);
if(!file.isMissing()){ // 如果文件有效
// 保存文件到指定上傳目錄
file.saveAs("/upload/new."+file.getFileExt(), su.SAVE_VIRTUAL);
count = su.save("/upload");
}
}
} catch (SmartUploadException e) {
e.printStackTrace();
}
out.println(count +"file(s) uploaded");
如果你對這個上傳組件不了解,最好是先去查查用法。。。
如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!
vaela
⑨ jsp+servlet實現文件上傳與下載源碼
上傳:
需要導入兩個包:commons-fileupload-1.2.1.jar,commons-io-1.4.jar
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* 上傳附件
* @author new
*
*/
public class UploadAnnexServlet extends HttpServlet {
private static String path = "";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/*
* post處理
* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
path = this.getServletContext().getRealPath("/upload");
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload up = new ServletFileUpload(factory);
List<FileItem> ls = up.parseRequest(request);
for (FileItem fileItem : ls) {
if (fileItem.isFormField()) {
String FieldName = fileItem.getFieldName();
//getName()返回的是文件名字 普通域沒有文件 返回NULL
// String Name = fileItem.getName();
String Content = fileItem.getString("gbk");
request.setAttribute(FieldName, Content);
} else {
String nm = fileItem.getName().substring(
fileItem.getName().lastIndexOf("\\") + 1);
File mkr = new File(path, nm);
if (mkr.createNewFile()) {
fileItem.write(mkr);//非常方便的方法
}
request.setAttribute("result", "上傳文件成功!");
}
}
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("result", "上傳失敗,請查找原因,重新再試!");
}
request.getRequestDispatcher("/pages/admin/annex-manager.jsp").forward(
request, response);
}
}
下載(i/o流)無需導包:
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 下載文件
* @author
*
*/
public class DownloadFilesServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 8594448765428224944L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/*
* 處理請求
* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("fileName");
System.out.print("dddddddddd:" + name);
// web絕對路徑
String path = request.getSession().getServletContext().getRealPath("/");
String savePath = path + "upload";
// 設置為下載application/x-download
response.setContentType("application/x-download");
// 即將下載的文件在伺服器上的絕對路徑
String filenamedownload = savePath + "/" + name;
// 下載文件時顯示的文件保存名稱
String filenamedisplay = name;
// 中文編碼轉換
filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8");
response.addHeader("Content-Disposition", "attachment;filename="
+ filenamedisplay);
try {
java.io.OutputStream os = response.getOutputStream();
java.io.FileInputStream fis = new java.io.FileInputStream(
filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while ((i = fis.read(b)) > 0) {
os.write(b, 0, i);
}
fis.close();
os.flush();
os.close();
} catch (Exception e) {
}
}
}