[英]Upload/Download big file with Apache Commons 4.5.5 with Java 11
[英]Java Commons File Upload, size, repository
我的問題是setSizeThreshold和setRepository如何工作。
如果我錯了,請糾正我,我的理解是,如果文件大小> setSizeThreshold(無論是多少),那么它將文件發送到臨時存儲的setRepository。 但是我從未見過此文件存儲在setRepository(filePath)中。 我沒有setFileCleaningTracker,因此從技術上講文件仍應位於setRepository(filePath)中嗎?
這是我的代碼,一切都來自doc,沒什么特別的。
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart){
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
// Set factory constraints
factory.setSizeThreshold(20480); // purposely make it small to test
factory.setRepository(new File(root + "tempFile"));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
//upload.setSizeMax(20480); // This makes the upload stop
try
{
// Parse the request
List<FileItem> items = upload.parseRequest(request);
// Process the uploaded items
Iterator<FileItem> i = items.iterator();
while(i.hasNext())
{
FileItem item = i.next();
//request.setAttribute("item", item);
if(item.isFormField()){
String fieldName = item.getFieldName();
String fieldValue = item.getString();
out.println(fieldName + ": " + fieldValue);
}
else
{
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
File name = new File(item.getName());
// File.separator: "/"
item.write( new File(root + "uploads" + File.separator + name));
}
}
} catch (FileUploadException ex)
{
ex.printStackTrace();
} catch (Exception ex)
{
Logger.getLogger(uploadFileServlet.class.getName()).log(Level.SEVERE, null, ex);
}
}
在文檔中
Larger items should be written to a temporary file on disk.
Very large upload requests should not be permitted.
提前致謝...
public class NServletController extends HttpServlet {
private static final long serialVersionUID = 1L;
//private boolean isMultipart;
private String FilePath;
private File file;
private String Address="";
private String Telephone="";
private String Email="";
private String MobileNumber="";
private String Name ="";
private String Workdetails="";
private String AccountName="";
private String BankName="";
private String Accountnumber="";
private String BranchName="";
private String Ifsdetails="";
private String Pannumber="";
//private String submit="";
private String filename="";
FileInputStream fis=null;
// private String name="";
private int rs1 = 0;
private String r="";
private int rs3=0;
String filePath = "E:\\Myuploads\\";
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter();
boolean isMultipartContent = ServletFileUpload.isMultipartContent(request);
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> fields = upload.parseRequest(request);
Iterator<FileItem> it = fields.iterator();
if (!it.hasNext()) {
return;
}
while (it.hasNext()) {
FileItem fileItem = it.next();
boolean isFormField = fileItem.isFormField();
if (isFormField && fileItem.getFieldName().equals("name")) {
Name=fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("address"))
{
Address = fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("email"))
{
Email = fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("mobileno"))
{
MobileNumber = fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("telephone"))
{
Telephone = fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("work"))
{
Workdetails= fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("accountholdername"))
{
AccountName = fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("bankname"))
{
BankName = fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("accountno"))
{
Accountnumber = fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("branchname"))
{
BranchName = fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("ifsccode"))
{
Ifsdetails = fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("pannumber"))
{
Pannumber = fileItem.getString();
}
else if(isFormField && fileItem.getFieldName().equals("submit"))
{
String submit = fileItem.getString();
}
else {
filename = FilenameUtils.getName(fileItem.getName());
OutputStream outputStream = new FileOutputStream(filename);
InputStream inputStream = fileItem.getInputStream();
int readBytes = 0;
byte[] buffer = new byte[10000];
while ((readBytes = inputStream.read(buffer, 0, 10000)) != -1) {
outputStream.write(buffer, 0, readBytes);
}
if(fileItem.getName()!= null){
// out.println("<td><img width='100' heigth='100' src="+ request.getContextPath() + "/images/"+ fileItem.getName() + "></td>");
if (filename.lastIndexOf("\\") >= 0) {
file = new File(filePath
+ filename.substring(filename
.lastIndexOf("\\")));
} else {
file = new File(filePath
+ filename.substring(filename
.lastIndexOf("\\") + 1));
}
fileItem.write(file);
}
}
}
}catch(Exception e)
{
e.printStackTrace();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.