SpringMVCのファイルのアップロードとダウンロードの問題

16061 ワード

SpringMVCのファイルのアップロードとダウンロードの問題
一、ファイルのアップロード
1、コンダクタンス
Spring MVCのファイルアップロードはAppacheのFileUploadコンポーネントに依存します.
  
        <dependency>
            <groupId>commons-fileuploadgroupId>
            <artifactId>commons-fileuploadartifactId>
            <version>1.3.3version>
        dependency>
2、jspファイルを準備する

説明:
1.フォームのmethod属性はpostに設定されており、getメソッドは使用できません.2.フォームのenctype属性はmultiiprt/form-dataに設定されています.マルチメディアファイルです.
3、springmvcを配置してファイルアップロードをサポートします.
クライアントフォームのenctype属性がmultiiPad/form-dataの場合、ブラウザはフォームデータをバイナリフローで処理し、サーバー側はファイルアップロードの要求を解析処理します.SpringMVCはファイルアップロードに直接的なサポートを提供しています.このサポートはMultiiprtResolaverのオブジェクトを通じて実現されます.MultiiprtResoloverはインタフェースの対象であり、その実装を通じてCommons MultiiprtResolaverのファイルアップロード作業を完了する必要があります.Spring MVCではMitipartResoloverオブジェクトを使用するのは非常に簡単です.配置ファイルにMultiiprtResolaverインターフェースを定義するBeanだけでいいです.
   
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="100000000">property>
        <property name="defaultEncoding" value="UTF-8">property>
    bean>
説明:
maxUploadSize:アップロードファイルの最大サイズ(バイト単位.)maxInMemorySize:キャッシュ中の最大サイズです.default Enccoding:デフォルトのコードフォーマットです.UTF-8.reolveLazily:ファイル解析を遅らせる
4、controllerを作成する
  @RequestMapping("fileupload")
			//    @RequestParam("")	     file jsp     name  	
    public String FileUpload(@RequestParam("file") MultipartFile multipartFile) throws IOException {
        //       
        String fileName=multipartFile.getOriginalFilename();
        System.out.println(fileName);
        //       (         )
        multipartFile.transferTo(new File("C:\\Users\\Administrator\\Desktop\\2.jpg"));
        return "index.jsp";
    }
二、ファイルのダウンロード
ファイルのダウンロードとは、ファイルサーバのファイルを本機にダウンロードすることです.
1、jspコード
2、作成controller
  @RequestMapping("filedownload")
    public ResponseEntity<byte[]> fileDownload() throws IOException {
        //     
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add("content-Disposition","attachment;filename=ss.jpg");
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(new File("C:\\Users\\Administrator\\Desktop\\2.jpg")),httpHeaders, HttpStatus.OK);
    }
3、ファイルをダウンロードすると大きな問題になります.
設定ファイルにメッセージ変換器が配置されています.ファイルをダウンロードするとファイルサイズが大きくなります.開けられません.byteのアレイ変換器を配置する必要があります.具体的な操作は以下の通りです.

<mvc:annotation-driven>
            
            <mvc:message-converters>

                <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter">bean>

                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <constructor-arg value="utf-8">constructor-arg>
                bean>
                
                <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                    <property name="defaultCharset" value="utf-8">property>
                    <property name="supportedMediaTypes">
                        <list>
                            
                            <value>text/html;charset=UTF-8value>
                            <value>application/jsonvalue>
                        list>
                    property>
                bean>
            mvc:message-converters>
        mvc:annotation-driven>