社区
Web 开发
帖子详情
求助:关于淘淘商城上传图片一直读条但图片服务器中已经显示
红桃三爱bug
2018-11-25 04:17:21
service层
controller
运行结果
ftp服务器中也显示
但是网页中一直在读条,不显示图片,还报错误。求助各位大佬解决,搞了一个周了,还是没解决。
...全文
91
3
打赏
收藏
求助:关于淘淘商城上传图片一直读条但图片服务器中已经显示
service层 controller 运行结果 ftp服务器中也显示 但是网页中一直在读条,不显示图片,还报错误。求助各位大佬解决,搞了一个周了,还是没解决。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
红桃三爱bug
2018-12-14
打赏
举报
回复
问题找到了,返回格式中map成功的key应该是url,不应该是message。
Insist_on_progress
2018-12-07
打赏
举报
回复
还不行就重启Nginx和ftp
Insist_on_progress
2018-12-07
打赏
举报
回复
话不多说直接上代码
1.ftp工具类
public class FtpUtil {
/**
* Description: 向FTP服务器上传文件
*
* @param host FTP服务器hostname
* @param port FTP服务器端口
* @param username FTP登录账号
* @param password FTP登录密码
* @param basePath FTP服务器基础目录
* @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath
* @param filename 上传到FTP服务器上的文件名
* @param input 输入流
* @return 成功返回true,否则返回false
*/
public static boolean uploadFile(String host, int port, String username, String password, String basePath,
String filePath, String filename, InputStream input) {
boolean result = false;
FTPClient ftp = new FTPClient();
ftp.enterLocalPassiveMode();
try {
int reply;
ftp.connect(host, port);// 连接FTP服务器
// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
//切换到上传目录
if (!ftp.changeWorkingDirectory(basePath + filePath)) {
//如果目录不存在创建目录
String[] dirs = filePath.split("/");
String tempPath = basePath;
for (String dir : dirs) {
if (null == dir || "".equals(dir)) continue;
tempPath += "/" + dir;
if (!ftp.changeWorkingDirectory(tempPath)) {
if (!ftp.makeDirectory(tempPath)) {
return result;
} else {
ftp.changeWorkingDirectory(tempPath);
}
}
}
}
//设置上传文件的类型为二进制类型
ftp.setFileType(FTP.BINARY_FILE_TYPE);
//上传文件
if (!ftp.storeFile(filename, input)) {
return result;
}
input.close();
ftp.logout();
result = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return result;
}
/**
* Description: 从FTP服务器下载文件
*
* @param host FTP服务器hostname
* @param port FTP服务器端口
* @param username FTP登录账号
* @param password FTP登录密码
* @param remotePath FTP服务器上的相对路径
* @param fileName 要下载的文件名
* @param localPath 下载后保存到本地的路径
* @return
*/
public static boolean downloadFile(String host, int port, String username, String password, String remotePath,
String fileName, String localPath) {
boolean result = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(host, port);
// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
FTPFile[] fs = ftp.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
File localFile = new File(localPath + "/" + ff.getName());
OutputStream is = new FileOutputStream(localFile);
ftp.retrieveFile(ff.getName(), is);
is.close();
}
}
ftp.logout();
result = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return result;
}
}
2.配置文件(你要先用Nginx代理ftp)
ftpclient.host=ftp服务器ip
ftpclient.port=21
ftpclient.username=用户名
ftpclient.password=密码
ftpclient.basepath=/home/ftp/
ftpclient.filepath=/
3.controller层
@Controller
public class PicController {
@Value("${ftpclient.host}")
private String host;
@Value("${ftpclient.port}")
private String port;
@Value("${ftpclient.username}")
private String username;
@Value("${ftpclient.password}")
private String password;
@Value("${ftpclient.basepath}")
private String basePath;
@Value("${ftpclient.filepath}")
private String filePath;
@PatchMapping("/pic/upload")
@ResponseBody
public Map<String, Object> upload(MultipartFile uploadFile) throws Exception {
String filename = IDUtils.genImageName() + uploadFile.getOriginalFilename().substring(uploadFile.getOriginalFilename().lastIndexOf("."));
boolean b = FtpUtil.uploadFile(host, Integer.valueOf(port), username, password, basePath, filePath, filename, uploadFile.getInputStream());
HashMap<String, Object> map = new HashMap<>();
if (b) {
map.put("error", 0);
map.put("url", "http://" + host + "/" + filename);
} else {
map.put("error", 1);
map.put("message", "文件上传失败");
}
return map;
}
}
基于SSM架构实现的大型分布式购物网站-B2C项目
-- ---------------------------- -- Records of tb_content_category -- ---------------------------- INSERT INTO `tb_content_category` VALUES ('30', '0', '
淘淘商城
', '1', '1', '1', '2015-04-03 16:51:38'...
毕业设计——基于SSM架构实现的大型分布式购物网站-B2C项目
-- ---------------------------- -- Records of tb_content_category -- ---------------------------- INSERT INTO `tb_content_category` VALUES ('30', '0', '
淘淘商城
', '1', '1', '1', '2015-04-03 16:51:38'...
2023-04-06-项目笔记 - 第五百零一阶段- 4.4.2.499全局变量的作用域-499 -2025.05.17
2023-04-06-项目笔记-第五百零一阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业
中
提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.499局变量的作用域_499- 2025-05-17
互联网+背景下高职大学生创业园与创新创业教育融合模式探索(1).docx
互联网+背景下高职大学生创业园与创新创业教育融合模式探索(1).docx
柳州电信云计算数据
中
心设计综合项目专项方案设计项目说明.doc
柳州电信云计算数据
中
心设计综合项目专项方案设计项目说明.doc
Web 开发
81,122
社区成员
341,744
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章