不多说,直接上代码
Controller
@CrossOrigin
@Controller
@RequestMapping("/management/good")
public class ManageGoodController {
@Autowired
FileService fileService;
@ResponseBody
@DeleteMapping("/delete/{name}")
public ServerResponse delete(@PathVariable("name") String name) throws IOException {
boolean res = fileService.delete(name);
return ServerResponse.createBySuccess(res);
}
@ResponseBody
@PostMapping("/upload")
public ServerResponse upload(MultipartFile file, HttpServletRequest httpServletRequest){
String targetFileName = fileService.upload(file,httpServletRequest);
String url = PropertiesUtil.getProperty("ftp.server.http.prefix")+targetFileName;
Map fileMap = Maps.newHashMap();
fileMap.put("uri",targetFileName);
fileMap.put("url",url);
return ServerResponse.createBySuccess(fileMap);
}
}
FileService
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public interface FileService {
String upload(MultipartFile file, HttpServletRequest httpServletRequest);
boolean delete(String name) throws IOException;
}
首先要明白FTP,这里有封装的FTP类
FileServiceImpl
import com.takefree.service.FileService;
import com.takefree.utility.FTPUtil;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@Service
public class FileServiceImpl implements FileService {
public boolean delete(String name) throws IOException {
return FTPUtil.deleteFile(name);
}
public String upload(MultipartFile file, HttpServletRequest httpServletRequest)
{
//准备工作: MultipartFile截取扩展名--> 再分配名字 --> 选择暂存到项目的文件夹路径resource/upload --> 创建文件夹
String fileName=file.getOriginalFilename();
String fileExName=fileName.substring(fileName.lastIndexOf(".")+1);
String uploadFileName= UUID.randomUUID().toString()+"."+fileExName;
String path=httpServletRequest.getSession().getServletContext().getRealPath("upload");
File fileDir=new File(path);
if(!fileDir.exists()) {
fileDir.setWritable(true);
fileDir.mkdirs();
}
File targetFile=new File(path,uploadFileName);
//开始工作
try {
//MultipartFile已经移到项目
file.transferTo(targetFile);
//上传FTP服务器上
FTPUtil.uploadFile(Lists.newArrayList(targetFile));
//删除upload下面的文件
targetFile.delete();
} catch (IOException e) {
e.printStackTrace();
}
return targetFile.getName();
}
}