基於SSM架構的檔案上傳

來源:互聯網
上載者:User

標籤:類型   nal   ping   http   根據   attribute   data   load   text   

 

我整理了一下,這個辦法在Servlet上應該也用得上。其實檔案上傳主要的問題是在於儲存路徑的拼接。

這裡我是把東西存在Web項目的WebContent目錄下的

下面貼一些代碼

目標應該是這樣一個格式 Workspace\ProjectName\自訂目錄\fileName

於是就有下面三段代碼

然後直接拼接起來就行了。下面我直接貼代碼吧

首先是jsp的form部分

<form action="upload" encType="multipart/form-data" method="post">    <label>選擇檔案</label>    <input id="fileId" name="file" type="file"/>    <input type="submit" value="提交"/>    </form>

然後是Controller部分

@RequestMapping("/upload")    public String uploadImg(HttpServletRequest request) throws IllegalStateException, IOException    {        //拼接檔案儲存體的目錄        String temp=Thread.currentThread().getContextClassLoader().getResource("").getPath();         int num=temp.indexOf(".metadata");        String path=temp.substring(1,num).replace(‘/‘, ‘\\‘)+request.getContextPath().replaceAll("/", "")+"\\WebContent\\images\\";                //上傳檔案        List<String> list = FileUtil.upLoad(request, path);        request.setAttribute("path", list.get(0));        System.out.println(list.get(0));       return "uploadok";             }

最後是我在FileUtil裡封裝的一個辦法,其實我很糾結要不要單檔案、多檔案分開來。最後我使用List來返回儲存的路徑,後面可能會根據需要改

package com.yck.util;import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.UUID;import javax.servlet.http.HttpServletRequest;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import org.springframework.web.multipart.commons.CommonsMultipartResolver;public class FileUtil{        public static List<String> upLoad(HttpServletRequest request,String path)    {                List<String> list = new ArrayList<String> ();    //存放結果        //1、將當前上下文初始化給CommonMutipartResolver        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());        //2、檢查Form中encType是否為multipart/form-data        if(multipartResolver.isMultipart(request))        {            //將request轉為MultipartHttpServletRequest            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;            //擷取迭代器遍曆multipartRequest裡的檔案名稱            Iterator<String> iter = multipartRequest.getFileNames();            while(iter.hasNext())            {                //擷取檔案並向下遍曆                MultipartFile file = multipartRequest.getFile(iter.next().toString());                if(file != null)                {                    //擷取檔案類型,即尾碼名                    String str = file.getOriginalFilename();                    String suffix = str.substring(str.lastIndexOf("."));                                        //用 當前日期+UUID作為檔案名稱避免重名                    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");                    String dateStr = sdf.format(new Date()).replaceAll("-", "");                    String name = dateStr +UUID.randomUUID().toString().replaceAll("-", "");                                        //拼接檔案絕對路徑                    String filePath = path + name + suffix;                    try                    {                        file.transferTo(new File(filePath));                    } catch (IllegalStateException | IOException e)                    {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                    list.add(filePath);                }            }        }        return list;            }}

最後測試結果

控制台輸出的路徑也是符合預期的

 E:\ckck\EclipseOxygen\MyWeb\WebContent\images\59fd10b473d4463686e1bffeaca5c46c.jpg 

 

基於SSM架構的檔案上傳

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.