㈠ java獲得上傳文件的路徑
commons-io下載地址:http://commons.apache.org/io/download_io.cgi
common-fileupload組件是apache的一個開源項目之一,可以從http://jakarta.apache.org/commons/fileupload/下載。
該組件簡單易用,可實現一次上傳一個或多個文件,並可限制文件大小。
下載後解壓zip包,將commons-fileupload.jar,和commons-io裡面後綴為jar復制到你的項目的webapp\WEB-INF\lib\下,如果目錄不存在請自建目錄。
這個項目是用來上傳文件,文件路徑為workspace\項目名稱\build\weboutput\file\項目下,如果沒有該文件夾請創建一個。否則會發生找不到路徑的情況
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
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.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* Servlet implementation class FileUpload
*/
public class FileUpload extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public FileUpload() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//判斷提交過來的表單是否為文件上傳菜單
boolean isMultipart= ServletFileUpload.isMultipartContent(request);
if(isMultipart){
//構造一個文件上傳處理對象
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
Iterator items;
try{
//解析表單中提交的所有文件內容
items=upload.parseRequest(request).iterator();
while(items.hasNext()){
FileItem item = (FileItem) items.next();
if(!item.isFormField()){
//取出上傳文件的文件名稱
String name = item.getName();
//取得上傳文件以後的存儲路徑
String fileName=name.substring(name.lastIndexOf('\\')+1,name.length());
//上傳文件以後的存儲路徑
String path= request.getRealPath("file")+File.separatorChar+fileName;
//上傳文件
File uploaderFile = new File(path);
item.write(uploaderFile);
//列印上傳成功信息
response.setContentType("text/html");
response.setCharacterEncoding("GB2312");
PrintWriter out = response.getWriter();
out.print("<font size='2'>上傳文件為:"+name+"<br>保存的地址為"+path+ "</font>");
}
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}
http://blog.163.com/lin305_gf/blog/static/969524402011718102116625/
這是給你轉載的網易博客的
servlet上傳文件
如果你是用的 框架 比如struts2 那就更簡單一點了
㈡ java如何獲取jsp頁面上傳的文件路徑
java文件中獲得路徑 ThreadcurrentThread()getContextClassLoader()getResource("") //獲得資源文件(class文件)所在路徑 ClassLoadergetSystemResource("") Class_NameclassgetClassLoader()getResource("") Class_Nameclass getResoujava如何獲取jsp頁面上傳的文件路徑
㈢ java怎樣獲取上傳文件真實路徑
可以通過changeWorkingDirectory方法切換上傳路徑來進行文件上傳。
上傳方法舉例:
/**
* 上傳文件
*
* @param fileName
* @param plainFilePath 文件路徑路徑
* @param filepath
* @return
* @throws Exception
*/
public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FTPClient ftpClient = new FTPClient();
String bl = "false";
try {
fis = new FileInputStream(plainFilePath);
bos = new ByteArrayOutputStream(fis.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = fis.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
Log.info("加密上傳文件開始");
Log.info("連接遠程上傳伺服器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
FTPFile[] fs;
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(filepath)) {
bl="true";
ftpClient.changeWorkingDirectory("/"+filepath+"");
}
}
Log.info("檢查文件路徑是否存在:/"+filepath);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon( "查詢文件路徑不存在:"+"/"+filepath);
return bl;
}
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// 設置文件類型(二進制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Log.info("上傳文件成功:"+fileName+"。文件保存路徑:"+"/"+filepath+"/");
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}
備註:只需要修改上傳的伺服器地址、用戶名、密碼即可進行伺服器訪問上傳。根據實際需要修改即可。
㈣ java或js(可用jquery)如何獲取上傳文件原始路徑名
上傳文件時,我想獲取客戶端上傳文件的原始路徑。第一考慮,當然是使用js,例如網上可以找到的:
function getPath(obj) { if (obj) { if (window.navigator.userAgent.indexOf("MSIE") >= 1) { obj.select(); return document.selection.createRange().text; } else if (window.navigator.userAgent.indexOf("Firefox") >= 1) { if (obj.files) { return obj.files.item(0).getAsDataURL(); } return obj.value; } return obj.value; } } 但這樣的代碼在Ie下還是可行的,但在火狐下不兼容。所以又想通過servlet的第三方工具去做,例如FileUpload,本以為FileItem下的getName()方法能夠得到全路徑名,但結果仍然只得到文件名,很是杯具!求解決方法!?
引用至於你說的,不明白你的意思關鍵問題是我要獲得這個路徑,並且傳遞到後台!用js會有兼容性問題,如果用FileUpload上傳,是否可以獲得呢?我是沒有得到的!!! 問題補充:zhanjia 寫道上傳文件一般用input標簽,type為file,瀏覽選擇文件後就是文件在本地的絕對路徑了
引用至於你說的,不明白你的意思關鍵的問題是我要獲得這個本地路徑,並且傳到後台!用js可以得到,但存在兼容性問題!?如果用FileUpload呢?我暫時還沒有得到!!! 問題補充:zhanjia 寫道網上的一些解決方案:
一般都是上傳以後在資料庫中保存上傳後的文件路徑,本地路徑一般沒意義
除非像上面所說的文件上傳預覽,還有那麼點用處
我用來做數據介面的,我僅僅是把路徑傳給另一個系統,然後那個系統就可以從這個路徑取文件了。
㈤ java 上傳文件的時候獲取客戶端的路徑
請問你用框架了嗎 如果是struts2 的話 專門有一個文件類型的變數存儲文件信息 直接file.getPath就可以得到路徑 或者瀏覽的時候地址會出現在頁面上的 用js獲取也可以的 希望能幫到你