使用kindeditor批量上传图片失败

忘川y 2015-09-06 02:44:08
上传图片时 将图片静态存储在nginx服务器中,但是nginx里存在资源,却显示上传失败,但是也有响应信息,请求路径也返回200
下面是后台代码
/**
* 图片上传
*/
@Controller

public class PicUploadController {

private static final Logger LOGGER = LoggerFactory.getLogger(PicUploadController.class);

@Autowired
private PropertieService propertieService;

private static final ObjectMapper mapper = new ObjectMapper();

// 允许上传的格式
private static final String[] IMAGE_TYPE = new String[] { ".bmp", ".jpg", ".jpeg", ".gif", ".png" };

@RequestMapping(value = "upload", method = RequestMethod.POST)
@ResponseBody
public String upload(@RequestParam("uploadFile") MultipartFile uploadFile, HttpServletResponse response)
throws Exception {

// 校验图片格式
boolean isLegal = false;
for (String type : IMAGE_TYPE) {
if (StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename(), type)) {
isLegal = true;
break;
}
}

// 封装Result对象,并且将文件的byte数组放置到result对象中
PicUploadResult fileUploadResult = new PicUploadResult();

// 状态,0-合法,1-不合法
fileUploadResult.setError(isLegal ? 0 : 1);

// 文件新路径
String filePath = getFilePath(uploadFile.getOriginalFilename());

if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Pic file upload .[{}] to [{}] .", uploadFile.getOriginalFilename(), filePath);
}

// 生成图片的绝对引用地址
String picUrl = StringUtils.replace(
StringUtils.substringAfter(filePath, propertieService.REPOSITORY_PATH), "\\", "/");
fileUploadResult.setUrl(propertieService.IMAGE_BASE_URL + picUrl);


File newFile = new File(filePath);

// 写文件到磁盘
uploadFile.transferTo(newFile);

// 校验图片是否合法
isLegal = false;
try {
BufferedImage image = ImageIO.read(newFile);
if (image != null) {
fileUploadResult.setWidth(image.getWidth() + "");
fileUploadResult.setHeight(image.getHeight() + "");
isLegal = true;
}
} catch (IOException e) {
}

// 状态
fileUploadResult.setError(isLegal ? 0 : 1);

if (!isLegal) {
// 不合法,将磁盘上的文件删除
newFile.delete();
}

//设置响应内容的类型,文本类型
response.setContentType("text/html");
String json=mapper.writeValueAsString(fileUploadResult);//将java对象转换为json字符串
System.out.println(json);
return json;
}

private String getFilePath(String sourceFileName) {
String baseFolder = propertieService.REPOSITORY_PATH + File.separator + "images";
Date nowDate = new Date();
// yyyy/MM/dd
String fileFolder = baseFolder + File.separator + new DateTime(nowDate).toString("yyyy")
+ File.separator + new DateTime(nowDate).toString("MM") + File.separator
+ new DateTime(nowDate).toString("dd");
File file = new File(fileFolder);
if (!file.isDirectory()) {
// 如果目录不存在,则创建目录
file.mkdirs();
}
// 生成新的文件名
String fileName = new DateTime(nowDate).toString("yyyyMMddhhmmssSSSS")
+ RandomUtils.nextInt(100, 9999) + "." + StringUtils.substringAfterLast(sourceFileName, ".");
return fileFolder + File.separator + fileName;
}

}
...全文
180 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
忘川y 2015-09-06
  • 打赏
  • 举报
回复
大牛们别捉迷藏啊!!!
忘川y 2015-09-06
  • 打赏
  • 举报
回复
人勒|?
道的朋友们,我们非常自豪的向您推荐禅道最新的4.0版本!相比较于去年9月3日发布的3.3版本而言,4.0版本在UI、安装升级、使用流程、操作体验方面都做了重大的改进和突破。我们后面会重点对4.x系列版本提供技术支持和扩展,之前的版本我们将陆续放弃支持,强烈建议每一位禅道的用户都尽快升级到4.0。 下面让我们一起来看下3.3版本以来禅道做得改进: 一、重新整理的一键安装包 我们重新整理精简了windows和linux一键安装包,简化了apache, php和mysql的配置文件。 并且重新实现了windows一键安装包的控制面板。 重新恢复了phpmyadmin。 二、重新梳理了UI界面 重新整理每个页面的操作按钮。 重新整理colorbox的样式,宽高和显示效果。 精简菜单。 显示操作记录的diff信息时,去掉标签。 三、禅道使用流程可选 现在安装禅道之后,可以选择禅道的使用流程,使用方式更加灵活,更加方便。 四、集成客户端提醒功能 现在禅道内置了桌面提醒工具,可以非常方便的提醒相关人员进行操作: 五、增加了web应用功能 从4.0版本开始禅道还集成了web应用功能,您可以非常方便的将某个网站添加为自己的应用,或者选择我们为大家整理的工具安装。 六、项目增加了短期迭代、长期项目和运维项目的区分 现在创建项目的时候,可以根据公司不同的管理方式来选择是短期迭代,还是长期项目,还是运维型的项目。不同类型的项目,其功能略有差异。比如长期项目和运维项目可以划分功能模块,短期迭代可以使用燃尽图等。 七、批量操作功能都集成到了开源版本中 我们将批量添加,批量编辑,批量关闭等操作都集成到了开源版本中,产品经理和项目经理应该很开心啦:) 八、其他大量的改进: 我的地盘: 修复todo批量添加之后跳转页面的错误 我的地盘里面的内容实现在服务器端的排序功能。 我的todo增加分页功能。 我的todo的浏览页面都增加导入到今天按钮 产品: 重构产品访问权限的实现逻辑 产品实现关闭功能。 处理产品的下拉菜单,将结束的放在下面 编辑需求的时候显示需求的验收标准 放开对需求激活的检查 需求内置批量添加,批量编辑和批量关闭功能。 创建产品计划的时候,增加日期的选择 调整计划列表页面 项目 将项目的概况改为维护 项目实现了开始,挂起,延期,关闭等操作。 项目区分短期迭代,长期效果 调整项目列表和模块列表的显示。 重构项目访问权限的实现逻辑 在设置项目起止日期的时候,自动将周末排除掉 内置任务的批量添加和批量编辑功能。 从需求可以直接批量分解任务。 任务导出增加开始时间字段 编辑任务的时候,允许其修改所属的项目 燃尽图实现标准线功能 项目需求增加导出功能 项目任务增加记录工时处理 测试: 在bug详情页面增加相关用例展示 测试用例增加接口类型 测试执行增加了批量运行功能。 用例执行增加上一个,下一个功能 内置用例的批量添加和批量编辑功能。 用例列表失败的用例状态显示红色。 创建测试任务的时候,能够发送邮件通知测试负责人 测试任务增加各种操作。 测试任务增加测试总结字段。 测试任务增加优先级字段 统计: 增加Bug指派表 组织: 实现了批量维护用户功能。 实现了用户常用联系人列表功能。 添加用户的时候可以设置用户所属分组。 用户增加角色功能。 用户管理页面增加搜索功能 用户管理页面增加分页功能 删除用户之后应当跳回原来的列表页面 重新调整了权限分组维护页面。 权限管理增加自从某个版本以来所有新增的权限的功能 修改了公司名称之后,将session里面的信息也自动更改过来 将超级管理员的权限放在权限列表中 完善接口权限的处理 搜索: 按照日期进行搜索的时候增加动态条件 按照用户字段来进行搜索的时候增加对me的支持 自动判断日期字段的操作符 邮件: 将邮件配置存储放在数据库中 发送邮件的时候,将diff中的代码标签去掉 命令行和程序: 解决5。4版本里面的waring问题 提供一个脚本,自动将各个php, bat。shell文件中的路径都处理好 写一个脚本,可以方便用户从Windows系统迁移到linux中 对bin目录下面的各个脚本提供bat的封装 实现了定时任务框架。 整理了常用的命令行工具。 集成了每日提醒功能。 其他: 提示用户最大可上传附件大小。 回收站增加了全部隐藏的功能。 升级了kindeditor, 文档功能增加了表格的支持。增加了代码高亮的功能。 控制编辑内容时p标签的margin 导出功能增加选中导出功能 更新模块顺序之后,自动调整其排序字段

81,116

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧