English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

مثال على تحميل ملف وتنزيل ملف في إطار عمل SpringMVC

在eclipse中的javaEE环境下:导入必要的架包

web.xml的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”> 
xmlns=“http://java.sun.com/xml/ns/javaee” 
xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee” 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id=“WebApp_ID” version=“2.5”>
   <!-- تكوين DispatcherServlet لـ SpringMVC -->
  <servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!-- تكوين HiddenHttpMethodFilter: تحويل طلبات POST إلى طلبات DELETE وPUT -->
   <filter>
     <filter-name>HiddenHttpMethodFilter</filter-name>
     <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
   </filter>
   <filter-mapping>
     <filter-name>HiddenHttpMethodFilter</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app> 

ملف تكوين bean لـ spring springmvc.xml;

<?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:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
  <!-- تكوين الحزم التي يتم مسحها تلقائيًا -->
  <context:component-scan base-package="com.atguigu.springmvc"></context:component-scan>
  <!-- تكوين معالج الرؤية -->
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"></property>
    <property name="suffix" value=".jsp"></property>
  </bean>
  <!-- 
    سيقوم default-servlet-handler بتعريف DefaultServletHttpRequestHandler في سياق SpringMVC.
    سيقوم بفحص الطلبات التي تدخل إلى DispatcherServlet، إذا وجد طلب لم يتم توجيهه، سيقوم بتوجيه الطلب إلى مخدم الويب الافتراضي. 
    معالجة Servlet. إذا لم يكن الطلب هو ملف مصدر ثابت، فإنه يتم معالجته من قبل DispatcherServlet.
    عادةً، اسم Servlet الافتراضي لمخدمات الويب هي default.
    若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 default-servlet-name 属性显式指定
  -->
  <mvc:default-servlet-handler/>
  <!-- 一般都会配置这个 <mvc:annotation-driven ></mvc:annotation-driven>,
  由于。。。requestmapping请求实现不了,使用这个,会使requestmapping请求一定实现
  -->
  <mvc:annotation-driven ></mvc:annotation-driven> 
  <!-- 配置 MultipartResolver ,即配置文件上传的属性-->
   <bean id="multipartResolver" 
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 默认的字符编码 -->
    <property name="defaultEncoding" value="UTF-8"></property> 
    <!-- 上传文件的大小 ,最大上传大小-->
    <property name="maxUploadSize" value="1024000"></property>
   </bean>
 </beans> 

 handler类方法:实现文件的上传和下载的方法

 @Controller
public class SpringMVCTest {
  @Autowired
  private EmployeeDao employeeDao;
  //实现文件的下载
  //需要说明的是文件的上传和下载不需要其他配置
  @RequestMapping("testResponseEntity")
  public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException{
    byte[] body=null;
    ServletContext servletContext=session.getServletContext();
    ///files/abc.txt:所要下载文件的地址
    InputStream in=servletContext.getResourceAsStream("/files/abc.txt");
    body=new byte[in.available()];
    in.read(body);
    HttpHeaders headers=new HttpHeaders();
    //响应头的名字和响应头的值
    headers.add("Content-Disposition", "attachment;filename=abc.txt");
    HttpStatus statusCode=HttpStatus.OK;
    ResponseEntity<byte[]> response=new ResponseEntity<byte[]>(body, headers, statusCode);
    return response;
  } 
  //文件上传,
     @RequestMapping("/testFileUpload")
     public String testFileUpload(@RequestParam("desc") String desc,
      @RequestParam("file") MultipartFile file) throws IOException{
      System.out.println("desc:"+desc);
      System.out.println("OriginalFilename"+file.getOriginalFilename());
      System.out.println("InputStream"+file.getInputStream());
      return "success";
   }
 } 

jsp页面:index.jsp:

<%@ 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/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>أدخل العنوان هنا</title>
</head>
<body>
  <center> 
  <!-- 文件上传的表单 -->
   <form action="testFileUpload" method="post" enctype="multipart/form-data">
    File:<input type="file" name="file"/>
    Desc:<input type="text" name="desc"/>
    <input type="submit" value="Submit"/>
   </form>
   <br><br>
  <!-- تحميل الملف -->
  <a href="testResponseEntity" rel="external nofollow" >اختبار ResponseEntity</a>
  </center>
</body>
</html> 

صفحة success.jsp: عرض نجاح تحميل الملف

 <%@ 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/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>أدخل العنوان هنا</title>
</head>
<body>
  <h3>صفحة النجاح</h3>
</body>
</html>

هذا هو نهاية محتوى هذا المقال، آمل أن يكون قد ساعدكم في التعلم، وأتمنى أن تشجعوا تعليمات呐喊 بشكل أكبر.

إعلان: محتوى هذا المقال تم جمعه من الإنترنت، حقوق النشر تخص المالك الأصلي، تم جمع المحتوى من قبل المستخدمين عبر الإنترنت وتم تحميله بشكل مستقل، هذا الموقع لا يملك حقوق الملكية، لم يتم تعديل المحتوى بشكل إنساني، ولا يتحمل أي مسؤولية قانونية. إذا كنت قد وجدت محتوى يشتبه في انتهاك حقوق النسخ، فلا تتردد في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # بـ @) لإبلاغنا، وقدم الأدلة ذات الصلة، وسيتم حذف المحتوى المزعوم الذي يشتبه في انتهاك حقوق النسخ فور التحقق منه.

أنت قد تحب