服務器接受文件,存儲以及路徑設置(虛擬路徑)(添加如何通過http訪問這個文件)

在一個實際項目中,總是不可避免的需要向服務器上傳文件。對於大多數的文件存儲,我們一般是將文件的路徑存入數據庫,通過路徑獲得文件。這裏有兩種方法,一種是存在webcontent中,一種是存入主機的硬盤中。從長遠的角度來看,我個人比較贊成存在主機硬盤中。這裏不得不解決一個問題。咱們的jsp文件是在tomcat容器中,無法訪問容器外的資源(移動端同理)。因此,我們需要設置虛擬路徑。

設置虛擬路徑有很多方法,這裏我提供一種方法。

在tomcat中的conf/server.xml中<host></host>之間增加代碼。

 <Context path="/upload" docBase="/Users/xuxuxiao/Documents/upload/"  reloadable="true">
            </Context>

path指的是相對路徑,docbase指的是絕對路徑。可以這麼理解。我們在使用時用/upload/xxx相當於/Users/xuxuxiao/Documents/upload/xxx

這樣之後,需要重啓服務器。如果報404,將項目重新加入tomcat即可。

在這裏順便貼上我存儲文件的代碼。

private String  saveFile(HttpServletRequest req, MultipartFile multipartFile,String id) {
		// TODO Auto-generated method stub
		if (!multipartFile.isEmpty()) {
			//文件上傳到的位置
			//String filepathString=req.getServletContext().getRealPath("/")+"upload/"+multipartFile.getOriginalFilename();
			String filepathString="/Users/xuxuxiao/Documents/upload/"+id+"/"+multipartFile.getOriginalFilename();
			File newfileFile=new File(filepathString);
			if (!newfileFile.getParentFile().exists()) {
				newfileFile.getParentFile().mkdirs();
			}
			try {
				multipartFile.transferTo(newfileFile);
				return "/upload/"+id+"/"+multipartFile.getOriginalFilename();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
			return null;
			
		}
		return null;
	}
ps:如果客戶端要訪問這個文件,則使用ip+端口+相對路徑。這樣就可以訪問到這個文件。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章