java文件上傳servlet
不用 下載相應jar包 引入就可以了 import 你懂得
Ⅱ java使用ServletFileUpload上傳文件,ServletFileUpload.parseRequest(request)報錯。
操作不允許,/trs/apache-tomcat-7.0.37/yy/kjcg/uploadtmp/upload__bf6b7e9_14520c5a8b9__8000_00000000.tmp不能創建。查查tomcat所屬用戶的/trs/apache-tomcat-7.0.37/yy/kjcg/uploadtmp目錄寫許可權
Ⅲ javaweb中實現文件上傳完整代碼(servlet裡面dopost的代碼)
structs 的 jsp 頁面文件上傳表單,只要項目是SSH的就行了
jsp:
<s:form action="add.do" id="inputForm" enctype="multipart/form-data" >
<td >
<s:file name="upload" cssClass="{required:true}" contenteditable="false"></s:file>
<span class="field_tipinfo">請選擇文件</span>
</td>
</s:form
action:
private File upload;//上傳的文件
....
public String add() throws Exception {
//保存文件
save(upload);
}
...
Ⅳ java servlet不用插件上傳文件:
import java.net.*;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SaveFileServlet extends HttpServlet
{
FileWriter savefile;
String filename = null;
String value = null;
/**
* Handles a POST request
*/
public void doPost(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
response.setContentType( "text/html ");
//FileWriter savefile;
try {
// Verify the content type
String ct = request.getContentType();
if (!ct.startsWith( "multipart/form-data "))
throw new RuntimeException
( "Invalid content type ");
// Get the boundary string
int p = ct.indexOf( "boundary= ");
if (p == -1)
throw new RuntimeException
( "No boundary string found ");
p += "boundary= ".length();
String boundary = "-- " + ct.substring(p);
String finalBoundary = boundary + "-- ";
// We 'll parse the multipart/form-data
// with a finite state machine
// Define names for the parser states
final int INIT = 0;
final int READING_HEADERS = 1;
final int READING_DATA = 2;
int state = INIT;
// Read and extract the fields
BufferedReader in = request.getReader();
main: for (;;) {
String line = in.readLine();
if (line == null)
break;
switch (state) {
// State 0: Ignoring everything before
// the first boundary
case INIT:
if (line.startsWith(finalBoundary))
break main;
if (line.startsWith(boundary)) {
state = READING_HEADERS;
filename = " ";
value = " ";
}
break;
// State 1: Parsing the headers
case READING_HEADERS:
if (line.length() == 0)
state = READING_DATA;
else {
// Get the field name
p = line.indexOf( "filename=\ " ");
if (p == -1)
break;
p += "filename=\ " ".length();
// ... up to the closing quote.
int q = line.indexOf( "\ " ", p);
if (q == -1)
break;
filename = line.substring(p, q);
filename= "./config/medet/applications/DefaultWebApp/ "+filename.substring(filename.lastIndexOf( "\\ ")+1);
savefile=new FileWriter(filename);
value = " ";
}
break;
// State 2: Reading the data
case READING_DATA:
if (line.startsWith(finalBoundary)) {
savefile.write(value);
savefile.close();
break main;
}
if (line.startsWith(boundary)) {
state = READING_HEADERS;
}
else {
if (value.length() > 0)
value += "\n ";
value += line;
}
break;
}
}
// Report the incident number back to the client
String[] text = {
" <HTML> ",
" <HEAD> ",
" <meta http-equiv= 'Content-Type ' content= 'text/html; charset=gb2312 '> ",
" <TITLE> 文件上傳成功 </TITLE> ",
" </HEAD> ",
" <BODY> ",
" <CENTER> ",
" <H3> 文件上傳成功! </H3> ",
" </CENTER> "
};
for (int i = 0; i < text.length; i++)
out.println(text[i]);
out.println(filename);
out.println( " </BODY> ");
out.println( " </HTML> ");
}
catch (Exception e) {
// Write the exception message
out.println( " <H3> Error: </H3> ");
out.println( " <PRE> ");
out.println(e.getMessage());
out.println( " </PRE> ");
}
finally {
out.flush();
}
}
}
希望幫到你
Ⅳ java jsp 怎麼上傳圖片到servlet
jsp:
<form action="up.do" method="post" enctype="multipart/form-data" id="upform"> 文件:<input type="file" name="file" id="file"/> <input type="button" id="btn" value="上傳"/> </form>
SERVLET:
FileItemFactory fileItemFactory = new DiskFileItemFactory(); ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory); //設置 中文 編碼集 fileUpload.setHeaderEncoding("UTF-8"); try { List<FileItem> fileItems= fileUpload.parseRequest(request); for (FileItem fi : fileItems) { if(fi.isFormField()){ } } } for (FileItem fileItem : fileItems) { if(fileItem.isFormField()){ }else{ //文件名 String filename = fileItem.getName(); //文件名處理 if(filename.indexOf('\\') != -1){ filename = filename.substring(filename.lastIndexOf('\\')+1); } System.out.println(filename); if(filename == null || filename.equals("")){ request.setAttribute("msg", "沒有指定上傳文件"); request.getRequestDispatcher("index.jsp").forward(request, response); //驗證碼錯誤 就退出 return; } //path 生成文件夾 String fpath = "F:\\\\中軟高科\\\\小組\\\\5組日報"+UpFileUtil.getMonthadnDate(); File file = new File(fpath); if(!file.exists()){ file.mkdir(); } //文件全路徑 fpath = fpath+"\\\\"+filename;// System.out.println(filename+"--->"+fpath+"--->"+UpFileUtil.getTime()); //寫出文件到 伺服器磁碟 InputStream in = fileItem.getInputStream();//request.getInputStream(); OutputStream out = new FileOutputStream(fpath); byte[] buff = new byte[1024*10]; while(in.read(buff) != -1){ out.write(buff); } out.flush(); out.close(); in.close(); //保存文件信息到資料庫 new UpFileDao().updFile("{call file_add(?,?,?)}",new String[]{filename,fpath,UpFileUtil.getTime()}); filename = null; fpath = null; file = null; request.setAttribute("msg", "上傳成功"); request.getRequestDispatcher("index.jsp").forward(request, response); } } } catch (Exception e) { e.printStackTrace(); }
Ⅵ java用jspmartupload上傳文件的時候,怎麼在目標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);
}
上面就是了。。。。祝你好運哈!
Ⅶ Java中如何在表單中上傳文件,並且把表單中的信息傳到servlet中 本人很急在線等
<input type="file"/>
Ⅷ servlet傳文件到servlet
代碼完全可用我已經實驗成功,這個可很好的servlet之間傳遞數據
兩個servlet傳值你可以把下面的代碼修改一下
簡單示例的源碼
passobject.java
首先,我們需要在兩台WEB主機上分別建立對passobject的定義,在兩台主機上的定義應該是完全一樣,這樣的類定義和我們通常使用並沒有什麼不同。只是這樣的類必須實現序列化,也就是要實現Serializable:
packagetest;
importjava.io.*;
{
StringPassValue1;
StringPassValue2;
publicvoidsetNewPassObject()
{PassValue1="yzysynew";
PassValue2="new";
}
publicvoidsetOldPassObject()
{PassValue1="yzysyold";
}
}
test.java
在其中的一台web主機上建立。除去加註釋的那幾行,這完全是一個通常意義上的用於顯示的servlet,不過那幾行的內容看上去也許會有點讓你眼花繚亂。這幾行將數據對象傳輸到了另一台主機的test2中,並接收經過test2處理的數據對象。對於這里所涉及的一些不太常用的API,我們將會在最後一並說明。
packagetest;
importjava.sql.*;
importjava.util.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjavax.servlet.jsp.*;
importjavax.servlet.jsp.tagext.*;
importjava.io.*;
importjava.net.*;
{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsIOException,ServletException
{PassObjectpassobject=newPassObject();
passobject.setNewPassObject();
PrintWriterout=response.getWriter();
out.println(passobject.PassValue1);
out.println(passobject.PassValue2);
//創建一個新的URL實例url
URLurl=newURL("http://141.56.16.8/examples/servlet/test.Test2");
//根據url建立連接
URLConnectioncon=url.openConnection();
//設置該連接可寫
con.setDoOutput(true);
//禁用cache
con.setUseCaches(false);
//取出輸出流
OutputStreamouts=con.getOutputStream();
//將該輸出流轉換為對象輸出流
ObjectOutputStreamobjout=newObjectOutputStream(outs);
//將要傳輸的對象寫入該對象輸出流中
objout.writeObject(passobject);
//取得返回的輸入流
InputStreamin=con.getInputStream();
//將該輸入流定義為對象輸入流
ObjectInputStreamobjStream;
objStream=newObjectInputStream(in);
//按指定類的格式讀取輸入流的內容
try{
passobject=(PassObject)objStream.readObject();
out.println(passobject.PassValue1);
out.println(passobject.PassValue2);
}
catch(java.lang.ClassNotFoundExceptionysy)
{
out.println("fail");
}
}
publicvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsIOException,ServletException
{
doGet(request,response);
}
}
test2.java
在其中的另一台web主機上建立,用來接收test發送的數據對象,並對其進行處理後返回到test。
packagetest;
importjava.sql.*;
importjava.util.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjavax.servlet.jsp.*;
importjavax.servlet.jsp.tagext.*;
importjava.io.*;
importjava.net.*;
{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsIOException,ServletException
{//封裝用於返回的對象輸出流
ObjectOutputStreamout=newObjectOutputStream(response.getOutputStream());
//封裝用於接收的對象輸入流
ObjectInputStreamin=newObjectInputStream(request.getInputStream());
PassObjectpassobject=newPassObject();
//按指定類的格式讀取對象輸入流中的內容
try{
passobject=(PassObject)in.readObject();
}
catch(java.lang.ClassNotFoundExceptionysy)
{
}
//對接受到的數據對象進行處理
passobject.setOldPassObject();
//將處理後的數據對象返回到對象輸出流中
out.writeObject(passobject);
}
publicvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsIOException,ServletException
{
doGet(request,response);
}
}
程序中涉及的部分API的說明
java.net.URL
URL類表示了一個統一資源路徑。這樣的資源可能是一個文件或目錄,也可能是更為復雜的諸如資料庫的查詢或是搜索引擎。
在我們的程序中使用了URL的一種構造函數:
URL(Stringspec)
直接使用字元串作為構造函數的參數,這實際上是URL的眾多構造函數中最為簡單的一種。
此外,我們還用到了URL的openConnection()方法:
()
throwsIOException
該方法返回了一個URLConnection對象。每次調用該方法時會開啟一個到指定URL的新的連接。
這里需要注意的是,調用該方法的結果是建立了一個連接,這與通常的頁面跳轉完全是兩回事。在更多的情況下,這里僅僅是建立了一個連接的通路,而並沒有實現任何其它的操作。
java.net.URLConnection
這是一個抽象類,是所有反映application和一個URL之前的通信的類的超類。這個類的實例可以用來對一個URL表示的資源進行讀寫。
在我們的程序中我們使用了這個類的如下方法:
getInputStream
()
throwsIOException
返回從這個連接讀取的一個輸入流
getOutputStream
()
throwsIOException
返回一個用於寫入這個連接的輸出流
setDoOutput
publicvoidsetDoOutput(booleandooutput)
設置該連接是否可以寫入
setUseCaches
publicvoidsetUseCaches(booleanusecaches)
設置該連接是否使用cache
java.io.OutputStream
這是一個抽象類,是所有反映一個二進制輸出流的類的超類。一個這樣的輸出流可以對二進制數據進行輸出或發送。
java.io.ObjectOutputStream
該類用來向一個OutputStream寫入java的對象。這個對象可以使用ObjectInputStream進行讀取或再造。
只有實現java.io.Serializable介面的對象可以寫入該數據流中。
在我們的程序中還使用了該類的writeObject()方法:
publicfinalvoidwriteObject(Objectobj)
throwsIOException
將指定的對象寫入ObjectOutputStream。
java.io.InputStream
這是一個抽象類,是所有反映一個二進制輸入流的類的超類。
java.io.ObjectInputStream
一個ObjectInputStream對一個使用ObjectOutputStream寫入的對象進行解析。
在我們的程序中使用了該類的readObject()方法:
publicfinalObjectreadObject()
throwsOptionalDataException,
ClassNotFoundException,
IOException
從一個ObjectInputStream中讀取一個對象。
程序執行的結果
如果一切正常,訪問test.Test你應該可以看到這樣的結果:
yzysynew
new
yzysyold
new
其中yzysynew,new是對象原來的內容,而yzysyold,new所反映的那個對象已經是傳送到test2後經test2處理過的了。
Ⅸ Java用servlet上傳文件,已經上傳到伺服器里但是MyEclipse已建目錄中不顯示已經上傳到文件
你這個是項目文件夾,上傳是到了網站里的文件夾,你看下項目發布到哪個tomcat上,去那找對應的文件夾,上傳文件在那
Ⅹ java如何實現文件上傳和下載的功能
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 com.jspsmart.upload.*;
import net.sf.json.JSONObject;
import action.StudentAction;
public class UploadServlet 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 {
boolean result=true;
SmartUpload mySmartUpload=new SmartUpload();
mySmartUpload.initialize(this.getServletConfig(), request,response);
mySmartUpload.setTotalMaxFileSize(50*1024*1024);//大小限制
mySmartUpload.setAllowedFilesList("doc,docx");//後綴名限制
try {
mySmartUpload.upload();
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
myFile.saveAs("/file/"+1+".doc");//保存目錄
} catch (SmartUploadException e) {
e.printStackTrace();result=false;
}
//*****************************//
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control","no-cache");
PrintWriter out = response.getWriter();
out.print(result);
out.flush();
out.close();
}
}
//我這是ajax方式的,不想這樣,把//**********************//以下部分修改就行了
//需要SmartUpload組件,去網上下個就行了,也有介紹的