文件上傳之MultipartFile使用


轉載 文件斷點上傳,html5實現前端,java實現服務器

一、單/多文件上傳使用例子:

工程路徑如下

-src
 |--main.java
    --controller
    --service
    |--config
       --ImageStorageProperties.java
       --WebAppConfig.java
 |--resource
    |--config
       --image-storage.properties

1.controller層

@CrossOrigin("*")
@RequestMapping(value = "/putImages",method = RequestMethod.POST, headers = "Accept=application/json")
public String putImages(@RequestBody MultipartFile[] files, HttpServletRequest request) {
    return putImgService.putImages(files,request);
}

2.service層

/**
 * 圖片單/多張上傳
 * @param files 文件
 * @return
 */
public String putImages(MultipartFile[] files, HttpServletRequest request) {
    String imgName = "";
    if (files == null || files.length == 0) {
        return "圖片為空";
    }
    //遍歷並保存文件
    for (MultipartFile file : files) {
        // 圖片傳到服務器
        imgName=imgUpload(file);
        if ("".equals(imgName)) {
            return "圖片上傳失敗";
        }
    }
    return "圖片上傳成功";
}

/**
 * 圖片傳到服務器
 * @param file
 * @return 圖片路徑
 */
public String imgUpload(MultipartFile file) {
    String fileName = file.getOriginalFilename();
    String suffixName = fileName.substring(fileName.lastIndexOf("."));
    fileName = UUID.randomUUID() + suffixName;
    // 圖片存儲地址,例如"E:/imagesServer/"
    String parent = imageStorageProperties.getStoreUrl();
    String imgName = "";
    try {
        File targetFile = new File(parent, fileName);
        // 創建文件夾
        if (!targetFile.getParentFile().exists()) {
            targetFile.getParentFile().mkdirs();
        }
        // 將上傳文件存儲到服務器中
        file.transferTo(targetFile);
        // 背景圖片地址
        imgName = targetFile.getName();
        
        // 圖片顯示地址,例如"http://localhost:8080/imgFiles/" + imgName
        imgName = imageStorageProperties.getHttpUrl() + imgName;
System.out.println(imgName); }
catch (IOException e) { e.printStackTrace(); } return imgName; }

3.文件存儲路徑配置

1)image-storage.properties配置文件如下

image.httpUrl=http://localhost:8080/imgFiles/
image.storeUrl=E:/imagesServer/

 2)ImageStorageProperties.java配置類如下

@ConfigurationProperties(prefix = "image", ignoreUnknownFields = false)
@PropertySource(value = {"classpath:config/image-storage.properties"},encoding="utf-8")
public class ImageStorageProperties {

    private String httpUrl;
    private String storeUrl;

    public String getHttpUrl() {
        return httpUrl;
    }

    public void setHttpUrl(String httpUrl) {
        this.httpUrl = httpUrl;
    }

    public String getStoreUrl() {
        return storeUrl;
    }

    public void setStoreUrl(String storeUrl) {
        this.storeUrl = storeUrl;
    }
}

4.攔截器配置

WebAppConfig.java配置如下

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {

    @Autowired
    private ImageStorageProperties imageStorageProperties;
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/imgFiles/**").addResourceLocations("file:"+imageStorageProperties.getStoreUrl());
        super.addResourceHandlers(registry);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM