Рубрики
Без рубрики

Пример загрузки файла Struts

– Пример загрузки файла Struts

Автор оригинала: mkyong.

В этом уроке вы узнаете, как загрузить файл в файловую систему сервера с помощью тега Struts .

1. Форма Действия

В форме действия создайте файл org.apache.struts.upload. Переменная FormFile для хранения загруженного файла, а также проверки формы для загруженного файла.

package com.mkyong.common.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.upload.FormFile;

public class FileUploadForm extends ActionForm{
	
	private FormFile file;
	
	public FormFile getFile() {
		return file;
	}

	public void setFile(FormFile file) {
		this.file = file;
	}

	@Override
	public ActionErrors validate(ActionMapping mapping,
	   HttpServletRequest request) {
		
	    ActionErrors errors = new ActionErrors();
	      
	    if( getFile().getFileSize()== 0){
	       errors.add("common.file.err",
	    	new ActionMessage("error.common.file.required"));
	       return errors;
	    }
	    
	    //only allow textfile to upload
	    if(!"text/plain".equals(getFile().getContentType())){
	        errors.add("common.file.err.ext",
	    	 new ActionMessage("error.common.file.textfile.only"));
	        return errors;
	    }
	    
            //file size cant larger than 10kb
	    System.out.println(getFile().getFileSize());
	    if(getFile().getFileSize() > 10240){ //10kb
	       errors.add("common.file.err.size",
		    new ActionMessage("error.common.file.size.limit", 10240));
	       return errors;
	    }
	      
	    return errors;
	}
}

2. Действие

В классе действий просто получите загруженный файл и сохраните его в файловой системе сервера, а вновь созданные сведения о файле сохраните в сеансе для последующего использования.

package com.mkyong.common.action;

import java.io.File;
import java.io.FileOutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

import com.mkyong.common.form.FileUploadForm;

public class FileUploadAction extends Action{
	
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
	    HttpServletRequest request, HttpServletResponse response)
	    throws Exception {
		
	    FileUploadForm fileUploadForm = (FileUploadForm)form;
		
	    FormFile file = fileUploadForm.getFile();
		
	    //Get the servers upload directory real path name
	    String filePath = 
               getServlet().getServletContext().getRealPath("/") +"upload";
	    
	    //create the upload folder if not exists
	    File folder = new File(filePath);
	    if(!folder.exists()){
	    	folder.mkdir();
	    }
	    
	    String fileName = file.getFileName();
	    
	    if(!("").equals(fileName)){  
	    	
	        System.out.println("Server path:" +filePath);
	        File newFile = new File(filePath, fileName);
              
	        if(!newFile.exists()){
	          FileOutputStream fos = new FileOutputStream(newFile);
	          fos.write(file.getFileData());
	          fos.flush();
	          fos.close();
	        }  
	        
	        request.setAttribute("uploadedFilePath",newFile.getAbsoluteFile());
	        request.setAttribute("uploadedFileName",newFile.getName());
	    }
		return mapping.findForward("success");
	}
}

3. JSP

Вы должны установить тип кодировки тега ” составные/данные формы ” и указать метод HTTP как ” post “.

Вы должны установить тип кодировки |||| тега “||составные/данные формы||” и указать метод HTTP как “||post||”.

<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>






:

Вы должны установить тип кодировки |||| тега “||составные/данные формы||” и указать метод HTTP как “||post||”.






	File uploaded to : <%= request.getAttribute("uploadedFilePath") %>
	

"> Click here to download it

4. Вы должны установить тип кодировки |||| тега “||составные/данные формы||” и указать метод HTTP как “||post||”.

Свяжите все вместе







	
		
	
	

	
	
		
		
		
			
		
		
	

	


Проверьте это

http://localhost:8080/StrutsExample/UploadPage.do Выберите файл и нажмите на кнопку отправить.

http://localhost:8080/StrutsExample/Upload.do Он будет перенаправлен на файл display.jsp и отобразит сведения о загруженном файле.

Оригинал: “https://mkyong.com/struts/struts-file-upload-example/”