图片上传相关

说明:之所以要转换为BASE64是因为我这个涉及到跨系统图片的传输。将file传输到另外一个系统,另外一个系统再进行文件上传。

这之间,从A到B的过程,图片是存在xml中的某个节点中的。到了B系统要进行xml转map的过程。所以在这个过程中,无法从map中取出byte[]或File类型的文件。因为转换过后map取出来的value值无法强转为byte[]或File,所以只能转换为BASE64字符串传值。到了B端再转为byte[]进行文件上传操作

public class FileStreamUtil {

private static String folderUrl;
   static BASE64Encoder encoder = new sun.misc.BASE64Encoder();
   static BASE64Decoder decoder = new sun.misc.BASE64Decoder();
   //将图片以二进制流
      public static String fileToBase64(File file) throws IOException
      {           
         BufferedImage bi;
         bi = ImageIO.read(file);   
             ByteArrayOutputStream baos = new ByteArrayOutputStream();   
             ImageIO.write(bi, "jpg", baos);   
             byte[] bytes = baos.toByteArray();
             return encoder.encodeBuffer(bytes).trim(); 
      }

    /**
       * 将二进制转换为byte[]
       * @param base64String
          */
      public  static byte[] base64StringToImage(String base64String){   
             byte[] bytes = new byte[base64String.length()];
         try {
            bytes = decoder.decodeBuffer(base64String);
            return bytes;
         } catch (IOException e) {
            e.printStackTrace();
         }
            return bytes;            
       }  

  //将file文件转换为byte[]
      public static byte[]  fileToByte(File file) throws IOException
      {           
           BufferedImage bi;
           bi = ImageIO.read(file);   
           ByteArrayOutputStream baos = new ByteArrayOutputStream();   
           ImageIO.write(bi, "jpg", baos);   
           byte[] bytes = baos.toByteArray();
           return bytes;        
      }
   
        /**
         * 将file写入到目标源:该方法暂时不用
         * @param File
         */
        public static void writeFile(File file){   
          try {
            byte[] bytes=fileToByte(file);
             ByteArrayInputStream bais = new ByteArrayInputStream(bytes);   
               BufferedImage bi1 =ImageIO.read(bais); //读取源文件  
               ImageIO.write(bi1, "jpg", file);//不管输出什么格式图片,此处不需改动 
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
   
      /**
       * 文件上传到服务器
       * @param bytes
       */
      public static void wireteByte(byte[] bytes){     
          String toUrl="";//目标地址
          File w2 = new File(toUrl);//可以是jpg,png,gif格式 "d://base64String.jpg"  
          try {
             ByteArrayInputStream bais = new ByteArrayInputStream(bytes);   
               BufferedImage bi1 =ImageIO.read(bais); //读取源文件  
         ImageIO.write(bi1, "jpg", w2);//不管输出什么格式图片,此处不需改动   
      } catch (IOException e) {
         LoggerUtil.trace("FileStreamUtil-----","wireteByte---", "上传传输服务器系统出错");
         e.printStackTrace();    
      }
    }
   
     /**
    * 生成uuid
    * 获取fileId
    * @return
    */
   @SuppressWarnings("unused")
   public static String getFileId() {
         UUID uuid = UUID.randomUUID();
         String fileid = StringUtils.replace(uuid.toString(), "-", "");
         return fileid;
   }
 
   /**
    * 设置nas路径
    * @param fileId
    * @param uploadFile
    * @return
    */
   @SuppressWarnings("unused")
   public static String getFilePath(String fileId){
      String fileType = ".jpg";
      String fileName = fileId + fileType;
      String dateString = DateFormatUtil.formatDate(new Date(), "yyyyMMdd");
      String fileNasPath = folderUrl + "/scms/" + dateString + "/" + fileName;
      return fileNasPath;
   }

}

时间: 2024-11-07 21:21:01

图片上传相关的相关文章

spring mvc 图片上传,图片压缩、跨域解决、 按天生成目录 ,删除,限制为图片代码等相关配置

spring mvc 图片上传,跨域解决 按天生成目录 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ #fs.domains=182=http://172.16.100.182:18080,localhost=http://localhost:8080 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE be

spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置

spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ #fs.domains=182=http://172.16.100.182:18080,localhost=http://localhost:8080 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE b

html,图片上传预览,input file获取文件等相关操作

input file常用方法: var obj=document.getElementById("upimage"); var file=obj.files[0];//获取文件数据 var path=obj.value;//获取文件当前路径 var size=obj.files[0].size;//获取文件大小 var prefix=path.substring( path.lastIndexOf('\\')+1 );//获取文件名的前缀名(文件格式) var suffix=path.

ckeditor4.5.1配置图片上传的方法

本篇博文主要面向初学者,一步一步地实现ckeditor的图片上传,欢迎各位大神指正. ckeditor的图片上传默认是关闭的,网上也有很多相关的教程,可是不是讲的不完整,就是版本太旧已经不适用.我写这篇博文主要面向初学者,有错误的地方欢迎指正. 截止本文撰写,ckeditor最新版本是4.5.1,我下载的版本是4.5.1standard,如果本文的方法不管用,请下载同一版本尝试. 1.开启图片上传界面 文件地址:ckeditor/plugins/image/dialogs/image.js 搜索

[原创]超强C#图片上传,加水印,自动生成缩略图源代码

<%@ Page Language=“C#“ AutoEventWireup=“true“ %> <%@ Import Namespace=“System“ %> <%@ Import Namespace=“System.IO“ %> <%@ Import Namespace=“System.Net“ %> <%@ Import NameSpace=“System.Web“ %> <%@ Import NameSpace=“Legalsof

百度UEditor图片上传、SpringMVC、Freemarker、Tomcat、Nginx、静态资源

个人官网.公司项目都需要 可视化编辑器,百度UEditor做得很不错,就用的这个.项目后台用到了SpringMVC.Freemarker,开发过程中部署在Jetty,线上部署用Tomcat,最后可能配置Nginx代理.     在实际使用过程中,遇到了太多的问题,因此有必要梳理和总结下. 1. 先说百度UEditor在Java环境中的使用:1.1   Html页面或者Freemarker模版里,引入百度UEditor的相关JS和CSS,如下 <script type="text/javas

JS图片上传预览插件制作(兼容到IE6)

其实,图片预览功能非常地常见.很意外,之前遇到上传图片的时候都不需要预览,也一直没有去实现过.现在手上的项目又需要有图片预览功能,所以就动手做了一个小插件.在此分享一下思路. 一.实现图片预览的一些方法. 了解了一下,其实方法都是大同小异的.大概有以下几种方式: ①订阅input[type=file]元素的onchange事件. 一旦选择的路径被改变就把图片上传至服务器,然后就返回图片在服务器端的地址,并且赋值到img元素上. 缺点:工作量大,有些上传并不是用户最终需要上传的图片,但是这种方式会

Android开发中使用七牛云存储进行图片上传下载

Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储原理,上面这幅图片是官方给出的原理图,表述当然比较清晰了.可以看出,要进行图片上传的话可以分为五大步: 1. 客户端用户登录到APP的账号系统里面: 2. 客户端上传文件之前,需要向业务服务器申请七牛的上传凭证,这个凭证由业务服务器使用七牛提供的服务端SDK生成: 3. 客户端使用七牛提供的客户端S

kindeditor扩展粘贴图片功能&amp;修改图片上传路径并通过webapi上传图片到图片服务器

前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功能 kindeditor修改图片上传路径并通过webapi上传图片到图片服务器(支持分布式图片) 结果演示 1.扩展粘贴图片功能演示 2.修改图片上传路径演示: 我们的网站演示地址是:http://localhost:9393/ 我们的图片服务器地址是:http://localhost:9394/