文件服务器
来源:互联网 发布:什么软件可以泡妞 编辑:程序博客网 时间:2024/05/20 20:22
图片服务器是为了减轻应用服务器的压力,对于电商很重要,并且可以实时读出尺寸的图片
1.控制图片的IO读和写
@Controller@RequestMapping("/fs/file")public class FileController extends SpringController {@Autowiredprivate BaseService baseService;/** * Springmvc图片上传,MultipartFile * 2015-8-3下午4:33:13 * @param file */@RequestMapping("/upload")@ResponseBodypublic String upload(MultipartFile file) {String fileServerName = "";if (file != null) {fileServerName = baseService.uploadFile(file,BaseConstant.SAVE_TYPE_FILE);}return fileServerName;}/** * 根据路径名称获取 * 2015-8-3下午5:34:25 * @param fileServerName * @return */@RequestMapping("/showFile")@ResponseBodypublic void showFile(String fileName) {if (StringUtils.isNotEmpty(fileName)) {if(StringUtils.contains(fileName, "_")) {String savePath = PropertyUtil.getPropertyValue(BaseConstant.CONFIG_PROPERTY_PATH, BaseConstant.FILE_SAVA_DISK)+fileName.split("_")[1];String desPath = GMagickUtil.reduceFile(fileName.split("_")[0], savePath);File file =new File(desPath);FileUtil.renderFileToClient(file, BaseConstant.CONTENTTYPE_IMAGE);file.delete();}else{String savePath = PropertyUtil.getPropertyValue(BaseConstant.CONFIG_PROPERTY_PATH, BaseConstant.FILE_SAVA_DISK)+fileName;FileUtil.renderFileToClient(new File(savePath), BaseConstant.CONTENTTYPE_IMAGE);}}}}
2.图片的service
/** * io保存上传的文件 * 2015-8-6上午8:23:33 * @param file * @param saveType * @return */public String uploadFile(MultipartFile file, String saveType){String fileServerName = "";Properties property = PropertyUtil.getProperty(BaseConstant.CONFIG_PROPERTY_PATH);String savePath = "";if(BaseConstant.SAVE_TYPE_UEDITOR.equals(saveType)) {savePath = property.getProperty(BaseConstant.UEDITOR_SAVA_PATH) + FileUtil.getRelativePath();}else {savePath = property.getProperty(BaseConstant.FILE_SAVA_PATH) + FileUtil.getRelativePath();}File dir = new File(property.getProperty(BaseConstant.FILE_SAVA_DISK) + savePath);if (!dir.exists()) {dir.mkdirs();}//获取文件的路径名称,统一以jpg的格式进行保存String newFileName = UUID.getUUID() + "." + FilenameUtils.getExtension(file.getOriginalFilename());File newFile = new File(dir + "/" +newFileName);try{file.transferTo(newFile);fileServerName = savePath + newFileName;} catch (IOException e) {e.printStackTrace();}return fileServerName;}
3.压缩GraphicsMagick工具
public class GMagickUtil {/** * 根据不同的需求生成不同的尺寸 * 2015-8-4上午9:41:01 * @param fileType * @param savePath * */public static String reduceFile(String fileType, String srcPath) {String desPath = FileUtil.getTempDir() + UUID.getUUID() + BaseConstant.FILE_EXTENSION;try {IMOperation operation = new IMOperation();operation.addImage(srcPath);operation.addRawArgs("-quality", BaseConstant.REDUCE_PERCENT); if(StringUtil.containsKey(BaseConstant.THUMB_VALUE, fileType)){String[] strs = fileType.split("x");operation.resize(Integer.valueOf(strs[0]), Integer.valueOf(strs[1]), '!');}operation.addImage(desPath);//ConvertCmd false使用ImageMagic,true使用GraphicsMagick ConvertCmd cmd = new ConvertCmd(true);cmd.run(operation);} catch (Exception e) {e.printStackTrace();}return desPath;}/** * 取图片中心,按尺寸获取 * 2015-8-4上午9:41:40 * @param srcPath * @param desPath * @param rectw * @param recth * */public static void cropImageCenter(String srcPath, String desPath, int rectw, int recth) { IMOperation operation = new IMOperation(); operation.addImage(srcPath); operation.resize(rectw, recth, '^').gravity("center").extent(rectw, recth); operation.addImage(desPath); ConvertCmd convert = new ConvertCmd(true); try {convert.run(operation);} catch (Exception e) {e.printStackTrace();} }}
4.一些常量
public class BaseConstant {/**配置文件路径*/public static final String CONFIG_PROPERTY_PATH = "/conf/file.properties";/**文件服务器名称*/public static final String FILE_SERVER_NAME = "file.servername";/**文件保存的盘符*/public static final String FILE_SAVA_DISK = "file.disk";/**文件保存路径名称*/public static final String FILE_SAVA_PATH = "file.savepath";/**百度编辑器路径名称*/public static final String UEDITOR_SAVA_PATH = "ueditor.savepath";/**保存类型*/public static final String SAVE_TYPE_FILE = "file";public static final String SAVE_TYPE_UEDITOR = "ueditor";/**压缩允许值*/public static final String[] THUMB_VALUE = new String[]{"80x80", "100x100", "120x120", "150x150", "200x200", "250x250"};/**图片压缩比例*/public static final String REDUCE_PERCENT = "60";/**压缩图片格式*/public static final String FILE_EXTENSION = ".jpg";/**图片输出流*/public static final String CONTENTTYPE_IMAGE = "image/jpeg";
0 0
- 文件服务器
- 文件服务器
- 文件服务器
- 文件服务器
- 文件服务器效果!
- 文件服务器 (1)
- samba 文件服务器
- 文件服务器解决方案
- samba--文件服务器
- Linux文件服务器
- 文件服务器NFS
- 文件服务器Samba
- FTP文件服务器
- android文件服务器
- 文件服务器-fastdfs
- tomcat 文件服务器
- 文件服务器-ftp
- 文件服务器-ftp
- hdu 5348 MZL's endless loop 2015 Multi-University Training Contest 5
- UIButton和UITextfield
- JAVA基础一大堆0805线程
- 为何大多数人做出来的图表只是一坨屎?
- Python编译器实现内幕:添加一个新语句
- 文件服务器
- 南邮 OJ 1464 Text Messaging
- JavaScript权威指南_149_第15章_脚本化文档_15.10-其他文档特性-可编辑的内容
- 软件工程师职场生存技能
- UI04_Delegate
- 登陆界面的完善
- 利用Mono.Cecil动态修改程序集来破解商业组件
- MVC框架介绍
- 南邮 OJ 1469 求和