Загрузка изображения и загрузка файлов по сути одинаковы, а само изображение также является файлом. Загрузка файла - это загрузка изображений на сервер. Хотя есть много способов, основная реализация заключается в чтении и написании файлов.
Что следует отметить
1. Форма должна записать атрибут ectype = "Multipart/Form-Data"
2. Чтобы убедиться, что файл может быть успешно загружен, значение атрибута имени управления файлом должно соответствовать имени переменной переменной элемента управления.
Например, если имя пространства является файлом, вам нужно определить его в фоновом режиме
Частный файл; // Имя элемента управления файлом частная строка FileContentType; // Тип изображения Private String fileFilEname; //Имя файла
1. JSP Page
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // en" http://www.w3.org/tml4/html4/html. <html> <Head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <meta http-equiv = "pragma" content = "no-cache"/> <base target = "_ self"> <Title> upload </tite> </head> <body> <form method = "action" action "?" ectype = "multipart/form-data"> <input type = "file" name = "file" value = "file"> <input type = "pospo" value = "идентификация"> </form> </body> </html>
1. Контроллер, который необходимо отправить для данных страницы
Пакет com.cpsec.tang.chemical.action; import java.io.file; импорт java.io.ioexception; импорт java.util.random; import javax.annotation.resource; импорт javax.servlet.http.httpserveltrequest; import org.apache.io.io.io org.apache.struts2.servletactionContext; Import org.springframework.stepolype.controller; import com.cpsec.tang.chemical.biz.lunbobiz; импорт com.cpsec.tang.chemical.entity.image; импорт com.opensymphony.xwork2. Actionsupport { / ** * * / private static final long serialversionuid = 1l; @Resource (name = "lunbobiz") private lunbobiz lunbobiz; Частное изображение изображения; Частный файл; // Имя элемента управления файлом частная строка FileContentType; // Тип изображения Private String fileFilEname; // Имя файла частное целочисленное число; public String findImage () {image = lunbobiz.findimage (); вернуть успех; } public String alterimage () {image = lunbobiz.findimage (); вернуть успех; } public String alterimage1 () {httpservletRequest request = servletactionContext.getRequest (); String root = request.getRealpath ("/upload"); // Путь сервера, на который должен быть загружено имена строк [] = filefilename.split ("//"); String filename = ""; if (names.length> = 1) {filename = getRandomString (20)+"."+names [names.length-1]; } String picpath = "upload/"+filename; // Путь изображения, сохраненное в файл файла базы данных1 = новый файл (root); try {fileutils.copyfile (file, new File (file1, filename)); }} catch (ioException e) {e.printstacktrace (); } вернуть успех; } /*Получить случайную строку* /public String getRandomString (int length) {// Длина указывает на длину сгенерированной строки BASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Случайный случайный = new Random (); StringBuffer sb = new StringBuffer (); for (int i = 0; i <length; i ++) {int number = random.nextint (base.length ()); sb.append (base.charat (номер)); } вернуть sb.toString (); }}Это для загрузки файлов путем копирования, и есть и другие способы
Метод 2
@Controller ("ContractAction") Public Class ContractAction Extends ActionSupport {Private Final Static String uploadDir = "/files"; // Путь к загрузке файла, создайте частный файл в рамках WebContent; // Имя элемента управления вводом должно быть файл // Загрузить коллекцию имени файла private String fileFilEname; // Загрузить тип файла тип содержимого коллекции private String filecontentType; частное имя файла; public String upload () бросает filenotfoundexception, ioexception {String path = uploadfile (); // Путь к базе данных сохранения файла; } // Выполнить функцию загрузки @suppresswarnings ("tempercation") public String uploadfile () Throws filenotFoundException, ioException {try {inputStream in = new FileInputStream (file); String dir = ServletActionContext.getRequest (). GetRealPath (uploadDir); File fileLocation = новый файл (dir); // Вы также можете вручную создать каталог целевой загрузки в каталоге корневых приложений if (! FileLocation.exists ()) {boolean iscreated = fileLocation.mkdir (); Если (! Iscreated) {// Создано не удалось создать каталог для загрузки целей, можно выполнить другую обработку, например, выбрасывание пользовательского исключения и т. Д. Эта ситуация обычно не должна происходить. вернуть ноль; }} // this.setFileFilename (getRandomString (20)); String [] name = this.getFileFilEname (). Split ("//."); String fileName = getRandomString (20)+"."+Name [name.length-1]; this.setFileFilEname (имя файла); System.out.println (имя файла); File uploadfile = new File (dir, filename); OutputStream out = new FileOutputStream (uploadFile); Byte [] buffer = новый байт [1024 * 1024]; int длина; while ((length = in.read (buffer))> 0) {out.write (buffer, 0, length); } in.close (); out.close (); return uploaddir.substring (1)+"//"+filefilename; } catch (filenotFoundException ex) {return null; } catch (ioException ex) {return null; }} public Static String getRandomString (int length) {String str = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789"; Случайный случайный = new Random (); StringBuffer sb = new StringBuffer (); for (int i = 0; i <length; i ++) {int number = random.nextint (62); sb.append (str.charat (номер)); } вернуть sb.toString (); }} В дополнение к одному изображению загрузки, есть несколько загрузок изображений, и принципы одинаковы
пакет com.cpsec.tang.chemical.action; импорт java.io.file; импортировать java.io.fileinputstream; Импорт java.io.filenotFoundException; Импорт java.io.fileOutputStream; импортировать java.io.ioexception; импортировать java.io.inputstream; импортировать java.io.outputstream; Import java.util.list; import javax.servlet.http.httpservletrequest; import org.apache.struts2.servletactionContext; импорт com.opensymphony.xwork2 "/загрузить"; // Загрузить коллекцию файлов private list <file> file; // Загрузка имен файла коллекция частного списка <string> fileFilename; // Загрузка файла тип содержимого коллекции Private List <string> FileContentType; public list <file> getfile () {return file; } public void setFile (list <File> file) {this.file = file; } public List <string> getFileFilEname () {return fileFilename; } public void setFileFilEname (list <string> fileFilename) {this.filefilename = fileFilename; } public List <string> getFileContentType () {return fileContentType; } public void setFileContentType (list <string> filecontentType) {this.filecontentType = fileContentType; } public String uploadform () throws exection {httpservletRequest request = servletactionContext.getRequest (); String webpath = null; // загружать путь для (int i = 0; i <file.size (); i ++) {// rup Загрузить каждый файл uploadfile (i); webpath = "upload/"+this.getFileFilename (). get (i); } вернуть "успех"; } // Выполнить функцию upload private string uploadfile (int i) бросает filenotfoundexception, ioException {try {inputStream in = new FileInputStream (file.get (i)); String dir = ServletActionContext.getRequest (). GetRealPath (uploadDir); File fileLocation = новый файл (dir); // Здесь вы также можете вручную создать каталог целевой загрузки в корневом каталоге приложения if (! FileLocation.exists ()) {boolean iscreated = fileLocation.mkdir (); Если (! ISCREATED) {// Если создан каталог загрузки целей, можно выполнить другую обработку, например, бросить пользовательское исключение и т. Д. Эта ситуация не должна происходить. вернуть ноль; }} String fileName = this.getFileFilename (). Get (i); File uploadfile = new File (dir, filename); OutputStream out = new FileOutputStream (uploadFile); Byte [] buffer = новый байт [1024 * 1024]; int длина; while ((length = in.read (buffer))> 0) {out.write (buffer, 0, length); } in.close (); out.close (); return uploadfile.toString (); } catch (filenotFoundException ex) {return null; } catch (ioException ex) {return null; }}}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.