SSM項(xiàng)目中上傳文件和圖片

最近做文件上傳費(fèi)了些功夫,記錄下使用方法。

1.依賴(lài)配置

        <!--文件上傳start-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.3</version>
        </dependency>
        <!--文件上傳end-->

2.在springmvc.xml文件中配置文件解析器,配置文件上傳的限制。

    <!-- 文件上傳 -->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 設(shè)置上傳文件的最大尺寸為5MB -->
        <property name="maxUploadSize">
            <value>5242880</value>
        </property>
        <property name="defaultEncoding">
            <value>UTF-8</value>
        </property>
    </bean>

3.配置虛擬路徑

實(shí)際項(xiàng)目中,不可能將上傳的文件和圖片保存在項(xiàng)目路徑中,這樣會(huì)導(dǎo)致項(xiàng)目崩潰。比較合理的做法是將上傳的文件和圖片存在本地的磁盤(pán)中,Tomcat中綁定一個(gè)虛擬路徑。Tomcat下conf目錄中的server.xml文件,在<Host> </Host>中添加<Context docBase="H:/data/file" path="/file"/>,這句話的意思是說(shuō)存儲(chǔ)在H:/data/file文件夾下的文件可以通過(guò)http://localhost:8080/file來(lái)訪問(wèn)。

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context docBase="H:/data/file" path="/file"/>
      </Host>

4.編寫(xiě)Controller

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
/**
 * Created by Tomthy on 2018/5/17
 */
/**
 * 文件、圖片上傳
 */
@Controller
public class UploadFileController {
    private static final Logger logger = LoggerFactory.getLogger(TestController.class);
    //文件上傳相關(guān)代碼
    @RequestMapping(value = "upload")
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile fileUpload) throws IOException {
        // 下面是圖片上傳的代碼
            // 得到圖片的原始文件名
            String originalName = fileUpload.getOriginalFilename();
            // 指定帶盤(pán)符的路徑, 物理路徑
            String realPath = "H://data//file//";
            /**
             * 為了處理出現(xiàn)重名現(xiàn)象, 將原始文件名去掉,
             * 通過(guò)UUID算法生成新的文件名
             */
            String uuidName = UUID.randomUUID().toString();
            // uuid名稱(chēng)加上文件的后綴名
            String newFile = uuidName + originalName.substring(originalName.lastIndexOf("."));
            // 創(chuàng)建File文件
            File file = new File(realPath + newFile);
            // 將圖片寫(xiě)入到具體的位置
            fileUpload.transferTo(file);
            // 將文件名保存到數(shù)據(jù)庫(kù)
//            items.setPic(newFile);
            return "http://localhost:8080/file/"+newFile;
    }
}

5.編寫(xiě)前臺(tái)頁(yè)面


以后補(bǔ)充


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,837評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,925評(píng)論 6 342
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,514評(píng)論 1 92
  • 在我搭建基于Spring Cloud的微服務(wù)體系應(yīng)用的時(shí)候所需要或者是常用的屬性配置文件,還有這些屬性的用途,此配...
    StrongManAlone閱讀 4,055評(píng)論 0 18
  • 母親 街上 她叫我 她拉著了我 她摸著我上身的棉衣 她問(wèn)厚嗎? 我說(shuō)厚 她問(wèn)暖和嗎? 我說(shuō)暖和 她問(wèn)貴嗎? 我說(shuō)不...
    拉薩的春天閱讀 379評(píng)論 0 1