English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يقدم Spring MVC طريقة سهلة لرفع الملفات، يمكن أن تكون صورًا أو ملفات أخرى. دعنا نرى مثالًا بسيطًا لرفع ملف باستخدام Spring MVC.
لإجراء هذا المثال، تحتاج إلى تحميل:
ملفات jar لـ Spring Core ملفات jar لـ Spring Web ملفات commons-fileupload.jar وcommons-io.jar
1)استنزع جميع ملفات Spring، بما في ذلك core، web، aop، mvc، j2ee، معالجة مسافات، oxm، jdbc، orm، إلخ.
2)استنزع commons-io.jar
3)استنزع Commons -fileupload.jar
1)أضف ملفات commons-io وfileupload.jar
2)أضف عنصر CommonsMultipartResolver في spring-servlet.xml
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
3)أنشئ نموذج لرفع الملف. يجب أن يكون الاسم النموذج "post"، وأدخل "multiple/form-data".
<form action="savefile" method="post" enctype="multipart/form-data"> اختر ملف: <input type="file" name="file"/> <input type="submit" value="تحميل ملف"/> </form>
4)في الكنترولر يستخدم كلاس CommonsMultipartFile.
@RequestMapping(value="/savefile",method=RequestMethod.POST) public ModelAndView upload(@RequestParam CommonsMultipartFile file, HttpSession session){ String path=session.getServletContext().getRealPath("/"); String filename=file.getOriginalFilename(); System.out.println(path+" "+filename); try{ byte barr[]=file.getBytes(); BufferedOutputStream bout=new BufferedOutputStream( new FileOutputStream(path+"/"+filename)); bout.write(barr); bout.flush(); bout.close(); catch(Exception e){System.out.println(e);} return new ModelAndView("upload-success","filename",path+"/"+filename); }
5) عرض الصورة في JSP.
<h1>نجاح التحميل</h1> <img src="${filename}"/>
إنشاء مجلد صور
أنشئ مجلد "صور" في مشروعك، لأننا سنكتب كودًا لتحديد جميع الملفات في مجلد "/صور".
index.jsp
<a href="uploadform">تحميل الصورة</a>
Emp.java
باقة com.w3codebox; استيراد java.io.BufferedOutputStream; استيراد java.io.File; استيراد java.io.FileOutputStream; استيراد javax.servlet.ServletContext; استيراد javax.servlet.http.HttpServletRequest; استيراد javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.springframework.web.servlet.ModelAndView; @Controller public class HelloController { private static final String UPLOAD_DIRECTORY = @RequestMapping("uploadform") public ModelAndView uploadForm(){ return new ModelAndView("uploadform"); } @RequestMapping(value="savefile",method=RequestMethod.POST) public ModelAndView saveimage(@RequestParam CommonsMultipartFile file, HttpSession session) throws Exception{ ServletContext context = session.getServletContext(); String path = context.getRealPath(UPLOAD_DIRECTORY); String filename = file.getOriginalFilename(); System.out.println(path+" "+filename); byte[] bytes = file.getBytes(); BufferedOutputStream stream =new BufferedOutputStream(new FileOutputStream( new File(path + File.separator + filename))); stream.write(bytes); stream.flush(); stream.close(); return new ModelAndView("uploadform","filesuccess","File successfully saved!"); } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
spring-servlet.xml
في هذا المكان، تحتاج إلى إنشاء bean لـ CommonsMultipartResolver.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.w3codebox"></context:component-scan> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> </beans>
uploadform.jsp
يجب أن يكون النموذج هنا method = "post" و enctype = "multipart/form-data".
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <!DOCTYPE html> <html> <head> <title>رفع ملف صورة</title> </head> <body> <h1>مثال رفع ملف - w3codebox</h1> <h3 style="color:red">${filesuccess}</h3> <form:form method="post" action="savefile" enctype="multipart/form-data"> <p><label for="image">اختر صورة</label></p> <p><input name="file" id="fileToUpload" type="file" /></p> <p><input type="submit" value="رفع"></p> </form:form> </body> </html>
الإخراج
انتقل إلى مسار الطباعة على الخادم لمعاينة ملفات الرفع.