不多說,直接上代碼
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();
}
}