В предыдущем разделе мы завершили функции добавления и обновления продуктов. Эти две части включают в себя загрузку изображений продукта, и нет подробного объяснения. С этой целью эта статья вводит функцию Struts2 для реализации загрузки файлов.
1. Инкапсулируйте информацию о файле
Сначала у нас должна быть модель, чтобы инкапсулировать информацию о файле. Этой модели требуются три атрибута: файл, тип файла и имя файла. Для изображения, которую мы хотим пройти, мы создаем новую модель следующим образом:
public class fileimage {private file file; частная строка ContentType; частное имя файла; public file getFile () {return file; } public String getContentType () {return contentType; } public String getFilEname () {return filename; } public void setUpload (файл файла) {// Метод SET не может быть таким же, как и имя атрибута, но параметры при передаче с переднего плана должны быть такими же, как и имя метода установки. То есть параметр, передаваемый на переднем плане, - это fileimage.upload this.file = file; } public void setUploadContentType (String contentType) {this.contentType = contentType; } public void setUploadFilEname (String fileName) {this.filename = filename; }}Таким образом, модель написана. Учитывая, что логика загрузки файлов не является уникальной для одного действия, мы записываем логику загрузки файлов в класс инструмента, чтобы можно было сделать все вызовы действий. Таким образом, мы создаем новый класс инструментов загрузки файлов (для программирования интерфейса, мы также извлекаем интерфейс класса инструментов):
2. Полный класс инструментов загрузки файла
// Загрузка файла класс инструмента интерфейс интерфейс public interface fileupload {// Реализовать функцию загрузки файла, вернуть новое имя файла после загрузки public rable string uploadfile (fileimage fileimage); } // СПУБТАЦИЯ КЛАССА КЛАССА КЛАССА КЛАССА КЛАССА @component ("fileupload") открытый класс Fileuploadutil реализует Fileupload {private String filePath; @Value ("#{prop.filepath}") //@value означает найти бон с id = "prop" в файле beans.xml. Он считывает файл конфигурации свойств посредством аннотации, а затем считывает значение key = filePath в соответствующем файле конфигурации public void setFilePath (String filePath) {System.out.println (filePath); this.filePath = filePath; } // 1. Получить расширение частной строки getFileext (string fileName) {return fileMetils.getextension (filename); } // 2. Сгенерировать случайный номер UUID в качестве нового имени файла Private String NewFilename (String FileName) {String Ext = getFileext (filename); вернуть uuid.randomuuid (). ToString () + "." + ext; } // Реализовать функцию загрузки файла, верните новое имя файла после загрузки @Override public String uploadFile (fileImage fileImage) {// Получить новый уникальный имя файла string pic = newFilename (fileimage.getFilename ()); try {fileutil.copyfile (fileimage.getfile (), new File (filePath, pic)); // Первый параметр является загруженным файлом, а второй параметр - скопировать файл на новое возвращение PATH PIC; } catch (Exception e) {бросить новое runtimeexception (e); } наконец {fileImage.getFile (). delete (); }}}Наверху @Value есть аннотация @Value, которая заключается в том, чтобы получить путь, по которому файл должен храниться в файле свойств. Для получения подробной информации, пожалуйста, обратитесь к: Spring, чтобы получить информацию о файле конфигурации.
3. Внедрять инкапсулированные классы файлов и классы инструментов в действии
После написания класса инкапсуляции файла и класса инструментов загрузки файла нам необходимо ввести эти два объекта в наше действие, чтобы функция загрузки файла могла быть реализована в действии:
@Controller ("baseaction") @scope ("Прототип") открытый класс Baseaction <t> extends actionsupport реализует запрос, Sessionaware, Applicationaware, ModelDriven <T> {// Защищенный файл -магистр; // Загрузка файла класс инструмента @Resource Protected FileUpload fileUpload; public fileImage getFileImage () {return fileImage; } public void setFileImage (fileImage fileImage) {this.fileimage = fileImage; } // Опустить другой нерелевантный код ...} 4. Реализация загрузки файла
Хорошо, теперь мы можем реализовать загрузку файлов в ProductAction. Если класс инструментов записан, объем кода в действии будет очень небольшим, что также является преимуществом, предоставленным инкапсуляцией.
@Controller ("ProductAction") @Scope ("Прототип") открытый класс Production Extens BaseAction <Продукт> {// Опустить другой нерелевантный код ... public void Said () THRES Exception {// Класс инструмента FileUpload извлекается, метод uploadfile непосредственно принимает объект FileImage и возвращает новое изображение string string string string pic = fileUplAd. model.setpic (pic); model.setDate (new Date ()); System.out.println (модель); // Информация о продукте хранится в productservice.save (модель); } public void Update () {String pic = fileUpload.uploadFile (fileImage); model.setpic (pic); model.setDate (new Date ()); System.out.println (модель); // Обновление продукта productservice.update (модель); }}Таким образом, мы выполняем функцию загрузки файлов с стойки регистрации.
Оригинальный адрес: http://blog.csdn.net/eson_15/article/details/51366384
Вышеуказанное - все содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.