直接上代碼,註釋的很清楚了,也可以直接黏貼使用
- 創建 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")
public class FileServiceImpl implements IFileService {
public Logger logger = LoggerFactory.getLogger(FileServiceImpl.class);
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){
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);
}