我々は、すべてのソフトウェア開発では、ファイルのアップロードとダウンロードが最も一般的な機能であることを知っているが、このストリーム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個のメディアタイプが要求されており、本研究ではサポートされませんされることを書き込みアクセスができない場合は、ヘッダ=「コンテンツタイプ=マルチパート/ *」、と言って注意してください質問に向かいます。