上傳檔案並目錄打散
上傳表單
<form action="${pageContext.request.contextPath }/Upload3" method="post" enctype="multipart/form-data">
使用者名稱;<input type="text" name="username"/><br/>
照 片:<input type="file" name="zhaoPian"/><br/>
<input type="submit" value="上傳"/>
</form>
servlet程式碼
package web.servlet;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* 目錄打散練習
* @author zhaozhihang
*
*/
public class Upload3 extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 三部曲
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(diskFileItemFactory);
try {
List<FileItem> list = sfu.parseRequest(request);
FileItem f = list.get(1);
// String s = request.getSession().getServletContext().getRealPath("/WEB-INF/files");
//得到檔案的儲存路徑
String root = this.getServletContext().getRealPath("/WEB-INF/files");
/*
* 1 得到檔名稱
* 2 裝換成hashCode
*/
String filename = f.getName();
//判斷是否有斜槓
int index = filename.lastIndexOf("\\");
if(index!=-1) {
filename = filename.substring(index+1);
}
String savename = UUID.randomUUID().toString().replace("-", "")+filename;
//得到hashCode
int hCode = filename.hashCode();
String hex = Integer.toHexString(hCode);
File file = new File(root, hex.charAt(0)+"/"+hex.charAt(1));
//建立目錄鏈
file.mkdirs();
//建立目標檔案
File destFile = new File(file, savename);
f.write(destFile);
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
相關文章
- 檔案上傳下載中的安全問題(上傳漏洞與目錄遍歷攻擊)
- 列出並排序檔案系統根目錄(/)下各個目錄的大小排序
- php檔案上傳之多檔案上傳PHP
- Godot遍歷目錄下檔案,並建立按鈕Go
- php如何上傳txt檔案,並且讀取txt檔案PHP
- 沒有目錄建目錄,沒有檔案建檔案
- tar命令打包指定目錄及其檔案,而不包括其上級目錄
- vue中檔案上傳阿里雲並獲取上傳進度Vue阿里
- ctfshow檔案上傳漏洞做題記錄
- 單個檔案上傳和批量檔案上傳
- linux建立賬戶並自動生成主目錄和主目錄下的檔案Linux
- 檔案上傳
- 18、檔案與目錄
- 清理bdump目錄檔案
- Linux SSH遠端檔案/目錄傳輸命令scpLinux
- SpringMVC 單檔案上傳與多檔案上傳SpringMVC
- Java 從指定URL下載檔案並儲存到指定目錄Java
- 企業生產案例:批量建立目錄並移動帶日期檔案到相應目錄
- Java大檔案上傳、分片上傳、多檔案上傳、斷點續傳、上傳檔案minio、分片上傳minio等解決方案Java斷點
- input 實現檔案上傳,並驗證檔案不大於5M
- postman測試多檔案上傳,並且後臺接收檔案陣列Postman陣列
- Scrapy:根據目錄來下載github上的檔案Github
- 檔案上傳之三基於flash的檔案上傳
- 前端大檔案上傳/分片上傳前端
- Linux SSh scp使用【遠端檔案/目錄的傳輸】Linux
- Flask——檔案上傳Flask
- PHP上傳檔案PHP
- JavaScript 檔案上傳JavaScript
- Git上傳檔案Git
- YII檔案上傳
- 檔案上傳概述
- beego上傳檔案Go
- 上傳檔案流程
- 上傳EXCLE檔案
- PHP 檔案上傳PHP
- 檔案上傳漏洞
- Python 檔案、目錄操作Python
- Linux 檔案與目錄Linux