JAVA——Spring MVC完成上傳圖片的接口

直接上代碼,註釋的很清楚了,也可以直接黏貼使用

  • 創建 java類 FileServiceImpl.java
import com.mymmall.service.IFileService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

@Service("iFileService") // 放在IFileService接口中
public class FileServiceImpl implements IFileService {
	
	// 日誌
    public Logger logger = LoggerFactory.getLogger(FileServiceImpl.class);

    /**
     *
     * @param file spring mvc 格式的文件
     * @param path 路徑
     * @return 沒有錯誤則返回文件名,有錯誤則返回 null
     */
    public String upload(MultipartFile file, String path){
        // 得到文件名
        String filename = file.getOriginalFilename();

        // 得到擴展名
        String fileExtensionName = filename.substring( filename.lastIndexOf(".") + 1 );

        // 把文件名改爲:唯一字符串 + 擴展名
        String uploadFilename = UUID.randomUUID().toString() + "." + fileExtensionName;

        // 打印日誌
        logger.info("上傳的原始文件名:{},上傳的路徑:{},新文件名:{}", filename, path, uploadFilename);

        // 如果沒有目錄則創建
        File fileDir = new File(path);
        if(!fileDir.exists()){
            fileDir.setWritable(true);
            fileDir.mkdirs();
        }

        // 創建文件
        File targetFile = new File(path, uploadFilename);

        // 上傳文件
        try {
            // 上傳成功
            file.transferTo(targetFile);
        } catch (IOException e) {
            logger.error("上傳文件異常", e);
            return null;
        }
        return targetFile.getName();
    }
}


  • 創建接口 IFileService.java
  • 在接口中聲明上訴方法
import org.springframework.web.multipart.MultipartFile;

public interface IFileService {
    String upload(MultipartFile file, String path);
}

  • 使用的列子
	// 引入接口
	@Autowired
    private IFileService iFileService;
    
	@RequestMapping("upload.do")
    @ResponseBody
    public ServerResponse upload(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request){
    	// 獲得tomcat的上下文路徑
        String path = request.getSession().getServletContext().getRealPath("upload");
        String targetName = iFileService.upload(file, path);
        String url = "http://image.com/" + targetName;
        Map fileMap = Maps.newHashMap();
        fileMap.put("uri", targetName); // 文件名
        fileMap.put("url", url); // 文件路徑
        return ServerResponse.createBySuccess(fileMap);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章