SSMフレームワークベースのアップロードおよびダウンロードファイル

我々は、すべてのソフトウェア開発では、ファイルのアップロードとダウンロードが最も一般的な機能であることを知っているが、このストリームjavaIOを通じて、この機能を行うことができますが、今日我々は、機能フレームワークをアップロードし、ダウンロードするファイルベースのSSMを見てみましょう。
まず、SSMのための良好な枠組みを構築するには、SSMのためのフレームワークを構築するために私の他のブログを参照してください。
1、新しいpro.xmlで依存:

<dependency>
     <groupId>commons-fileupload</groupId>
     <artifactId>commons-fileupload</artifactId>
     <version>1.3</version>
     </dependency>

図2は、コード構成ファイル次春に配置しました:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8"></property>
        <property name="maxUploadSize" value="5242440"></property>
    </bean>

3、フロントエンドは、書き込みJSPにリクエストを送信します。

<form action="${pageContext.request.contextPath}/uploadFile"  method="post" enctype="multipart/form-data">  
      选择文件:<input type="file" name="file"/> 
      <input type="submit" value="上传">  
</form> 
<form action="${pageContext.request.contextPath}/downFile" method="get">  
              <input type="submit" value="下载">  
</form>

図4に示すように、制御層コード:

 /**文件上传功能*/
    @RequestMapping(value="uploadFile",headers = "content-type=multipart/*",method = RequestMethod.POST)
    public String uploadFile(MultipartFile file,HttpServletRequest request)throws IOException{
        //文件上传的位置,如果不存在uploadFile文件夹就创建一个
        String path = request.getSession().getServletContext().getRealPath("uploadFile");
        System.out.println(request.getSession().getServletContext());
        String fileName=file.getOriginalFilename();
        File dir=new File(path,fileName);
        if(!dir.exists()){
            dir.mkdirs();
        }
        //MultipartFile自带的解析方法
        file.transferTo(dir);
        return "getAllResume";
    }

    //**文件下载功能*//*
    @RequestMapping("downFile")
    public void downFile(HttpServletRequest request, HttpServletResponse response)throws Exception{
        String fileName = request.getSession().getServletContext().getRealPath("uploadFile")+"/yxc.docx";
        InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
        String filename = "yxc.docx";
        filename = URLEncoder.encode(filename,"UTF-8");
        response.addHeader("Content-Disposition", "attachment;filename=" + filename);
        response.setContentType("multipart/form-data");
        BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
        int len = 0;
        while((len = bis.read()) != -1){
            out.write(len);
            out.flush();
        }
        out.close();
    }

ファイルアップロードの一般的な場所は、あなたがでrequest.getSession()。のgetServletContext()を印刷することができます知っていない場合は、内部に持つことになりますプロジェクトのデフォルトのターゲットです。GetRealPath()は、絶対パスを取得するために、その後行きます。それはちょうど、完成ファイルのアップロードとダウンロードですが、いくつかの詳細はまだ修正する必要性が存在している、そのようなファイルの名前とわからない直接することが、データベースに関連付けられた変数を介して取得すると、もしそうなら、あなたはデータベースでファイルのパスを確認することができますそして、ファイル名、および、ダウンロードまたはアップロード。また、あなたがの良い、私はエラー時にこの文を書いていないが、415個のメディアタイプが要求されており、本研究ではサポートされませんされることを書き込みアクセスができない場合は、ヘッダ=「コンテンツタイプ=マルチパート/ *」、と言って注意してください質問に向かいます。

公開された33元の記事 ウォン称賛37 ビュー4386

おすすめ

転載: blog.csdn.net/weixin_42142899/article/details/103351514