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);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章