赞
踩
环境一定要先搭建好,搭建的详细步骤和资源文件详见上一篇博客:https://blog.csdn.net/qq_37767455/article/details/100175038
最后浏览器访问:
1.配置文件
2.controller
3.service
@Override public AppResponse uploadFile(Map<String, Object> param) { AppResponse appResponse = null; try { MultipartFile multipartFile[] = (MultipartFile[]) param.get("files"); for (int i = 0; i < multipartFile.length; i++) { FastDFSFile file = new FastDFSFile(); //file.setAuthor((String) param.get("userId")); //图片格式后缀 String ext = multipartFile[i].getOriginalFilename(). substring(multipartFile[i].getOriginalFilename().lastIndexOf(".") + 1); file.setContent(multipartFile[i].getBytes()); file.setName(multipartFile[i].getOriginalFilename()); file.setExt(ext); //上传图片 String filePath[] = FastDfsUtil.upload(file); CommodityFilePath commodityFilePath=new CommodityFilePath(); //返回图片路径 commodityFilePath.setFilePath(serverFdfs + filePath[0] + "/" + filePath[1]); appResponse=AppResponse.success("上传成功",commodityFilePath); } } catch (Exception e) { appResponse=AppResponse.bizError("上传失败"+e); } return appResponse; }
import org.csource.common.NameValuePair; import org.csource.fastdfs.*; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; public class FastDfsUtil { private static org.slf4j.Logger logger = LoggerFactory.getLogger(FastDfsUtil.class); static { try { String filePath = new ClassPathResource("../resources/fdfs_client.conf").getFile().getAbsolutePath(); ClientGlobal.init("../resources/fdfs_client.conf"); } catch (Exception e) { logger.error("FastDFS Client Init Fail!", e); } } public static String[] upload(FastDFSFile file) { logger.info("File Name: " + file.getName() + "File Length:" + file.getContent().length); NameValuePair[] meta_list = new NameValuePair[1]; meta_list[0] = new NameValuePair("author", file.getAuthor()); long startTime = System.currentTimeMillis(); String[] uploadResults = null; StorageClient storageClient = null; try { storageClient = getTrackerClient(); uploadResults = storageClient.upload_file(file.getContent(), file.getExt(), meta_list); } catch (IOException e) { logger.error("IO Exception when uploadind the file:" + file.getName(), e); } catch (Exception e) { logger.error("Non IO Exception when uploadind the file:" + file.getName(), e); } logger.info("upload_file time used:" + (System.currentTimeMillis() - startTime) + " ms"); if (uploadResults == null && storageClient != null) { logger.error("upload file fail, error code:" + storageClient.getErrorCode()); } String groupName = uploadResults[0]; String remoteFileName = uploadResults[1]; logger.info("upload file successfully!!!" + "group_name:" + groupName + ", remoteFileName:" + " " + remoteFileName); return uploadResults; } public static FileInfo getFile(String groupName, String remoteFileName) { try { StorageClient storageClient = getTrackerClient(); return storageClient.get_file_info(groupName, remoteFileName); } catch (IOException e) { logger.error("IO Exception: Get File from Fast DFS failed", e); } catch (Exception e) { logger.error("Non IO Exception: Get File from Fast DFS failed", e); } return null; } public static InputStream downFile(String groupName, String remoteFileName) { try { StorageClient storageClient = getTrackerClient(); byte[] fileByte = storageClient.download_file(groupName, remoteFileName); InputStream ins = new ByteArrayInputStream(fileByte); return ins; } catch (IOException e) { logger.error("IO Exception: Get File from Fast DFS failed", e); } catch (Exception e) { logger.error("Non IO Exception: Get File from Fast DFS failed", e); } return null; } public static byte[] downByte(String groupName, String remoteFileName) { try { StorageClient storageClient = getTrackerClient(); byte[] fileByte = storageClient.download_file(groupName, remoteFileName); return fileByte; } catch (IOException e) { logger.error("IO Exception: Get File from Fast DFS failed", e); } catch (Exception e) { logger.error("Non IO Exception: Get File from Fast DFS failed", e); } return null; } public static void deleteFile(String groupName, String remoteFileName) throws Exception { StorageClient storageClient = getTrackerClient(); int i = storageClient.delete_file(groupName, remoteFileName); logger.info("delete file successfully!!!" + i); } public static StorageServer[] getStoreStorages(String groupName) throws IOException { TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection(); return trackerClient.getStoreStorages(trackerServer, groupName); } public static ServerInfo[] getFetchStorages(String groupName, String remoteFileName) throws IOException { TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection(); return trackerClient.getFetchStorages(trackerServer, groupName, remoteFileName); } public static String getTrackerUrl() throws IOException { return "http://" + getTrackerServer().getInetSocketAddress().getHostString() + ":" + ClientGlobal.getG_tracker_http_port() + "/"; } private static StorageClient getTrackerClient() throws IOException { TrackerServer trackerServer = getTrackerServer(); StorageClient storageClient = new StorageClient(trackerServer, null); return storageClient; } private static TrackerServer getTrackerServer() throws IOException { TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection(); return trackerServer; } }
FastDFSFile类:
public class FastDFSFile { private String name; private byte[] content; private String ext; private String md5; private String author; public String getName() { return name; } public void setName(String name) { this.name = name; } public byte[] getContent() { return content; } public void setContent(byte[] content) { this.content = content; } public String getExt() { return ext; } public void setExt(String ext) { this.ext = ext; } public String getMd5() { return md5; } public void setMd5(String md5) { this.md5 = md5; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } }
5.还有用到的类
CommodityFilePath:
public class CommodityFilePath {
String filePath;
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。