spring-mvc文件上傳

SpringMVC 用的是 的MultipartFile來進行多文件上傳
1.配置
    <!-- spring實現文件上傳 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
2.創建一個簡單的表單,如下
<form action="${ctxPath }/upload.action" id="infoform" method="post" name='infoform' enctype="multipart/form-data">
文件1:<input id="upic1" name="uploadify[]"  type="file" ></input>
文件2:<input id="upic2" name="uploadify[]"  type="file" ></input>
文件3:<input id="upic3" name="uploadify[]"  type="file" ></input>
文件4:<input id="upic4" name="uploadify[]"  type="file" ></input>

</form> 注意:form標籤中加上enctype="multipart/form-data"
3.創建一個控制器類,編寫保存文件的方法
@RequestMapping("/upload")
    public void upload(@RequestParam(required=false,value="uploadify[]") MultipartFile[] files,HttpServletRequest request,HttpServletResponse response) throws IOException, org.apache.commons.fileupload.FileUploadException{
       
        try {
            request.setCharacterEncoding("UTF-8");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Date date = new Date();// 獲取當前時間
        SimpleDateFormat sdfFolderName = new SimpleDateFormat("yyyyMMdd");
        
        String newFolderName = sdfFolderName.format(date);  //存放文件夾名
        
        
        // 獲得容器中上傳文件夾所在的物理路徑
        String savePath = request.getSession().getServletContext().getRealPath("/") + "\\" + "upload\\" + newFolderName + "\\";
        System.out.println("上傳文件存放路徑" + savePath + "; ");
        File file = new File(savePath);
        if (!file.isDirectory()) {
            file.mkdirs();
        }

        // 遍歷上傳文件寫入磁盤
        if (files != null && files.length > 0) {
            for (int i = 0; i < files.length; i++) {
                MultipartFile imageFile = files[i];
                if (imageFile != null && !imageFile.isEmpty()) {
                    String fileName = PubFileUtil.generateRandomFileName()
                            + PubFileUtil.getSuffix(imageFile);                
                    imageFile.transferTo(new File(savePath, fileName));
                }
            }
            }
如果是上傳一個文件,可以通過MultipartFile file = multipartRequest.getFile("pic");獲取到文件對象,然後transferTo(File dest)將文件寫入磁盤。

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章