网络文件传输 base64

大多数开发者以为网络之间进行附件传输时候通常想到的是ftp等文件传输的形式。其实做为一名java开发者,小文件之间的网络传输进行base64转换也是一个不错的选择。 java

以下是个人源代码: web

package com.gxt.utils;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.lang.StringUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * base64 IO流互相流转
 *
 * @author wenhao
 * 罗文浩
 *
 */
public class Base64ConvertByFile {
    BASE64Decoder decoder = new BASE64Decoder();

    /**
     * @Title : ioToBase64
     * @描述:流转base64
     * @做者: 罗文浩
     * @参数: 传入参数定义
     * @返回值: String 返回类型
     * @throws
     */
    public static String ioToBase64() throws IOException {
        String fileName = "d:/gjj.docx"; // 源文件
        String strBase64 = null;
        InputStream in = null;
        try {
            in = new FileInputStream(fileName);
            byte[] bytes = org.apache.axiom.attachments.utils.IOUtils.getStreamAsByteArray(in);
            // in.available()返回文件的字节长度
            // byte[] bytes = new byte[in.available()];
            // 将文件中的内容读入到数组中
            // in.read(bytes);
            strBase64 = new BASE64Encoder().encode(bytes); // 将字节流数组转换为字符串
            strBase64 = fileName.substring(fileName.lastIndexOf("."), fileName.length()).split("\\.")[1] + ";" + strBase64;
            // strBase64 = new String(strBase64);
        } catch (FileNotFoundException fe) {
            fe.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } finally {
            in.close();
        }
        return strBase64;
    }
    /**
     * @Title: ioToBase64
     * @描述:流转base64
     * @做者: 罗文浩
     * @参数: 传入参数定义
     * @返回值: String 返回类型
     * @throws
     */
    public static String ioToBase64(String fileName) throws IOException {
        String strBase64 = null;
        InputStream in = null;
        try {
            in = new FileInputStream(fileName);
            byte[] bytes = org.apache.axiom.attachments.utils.IOUtils.getStreamAsByteArray(in);
            strBase64 = new BASE64Encoder().encode(bytes); // 将字节流数组转换为字符串
            strBase64 = fileName.substring(fileName.lastIndexOf("."), fileName.length()).split("\\.")[1] + ";" + strBase64;
        } catch (FileNotFoundException fe) {
            fe.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } finally {
            in.close();
        }
        return strBase64;
    }
    public static String ioToBase64(byte[] by, String fileName) throws IOException {
        String strBase64 = null;
        try {
            strBase64 = new BASE64Encoder().encode(by); // 将字节流数组转换为字符串
            strBase64 = fileName.substring(fileName.lastIndexOf("."), fileName.length()).split("\\.")[1] + ";" + strBase64;
        } catch (Exception fe) {
            fe.printStackTrace();
        } finally {
        }
        return strBase64;
    }

    /**
     * @Title: base64ToIo
     * @描述:base64转IO流
     * @做者: 罗文浩
     * @参数: 传入参数定义
     * @返回值: void 返回类型
     * @throws
     */
    public static InputStream base64ToIo(String filename, String strBase64) throws IOException {
        // strBase64 = new String(strBase64);
        strBase64 = strBase64.replaceAll(" ", "");
        String base[] = strBase64.split(";");
        Resource resource = new ClassPathResource("com/miitgxt/webservices/utils/");
        String filePath = resource.getFile().getPath();
        FileOutputStream out = null;
        String string = base[1];
        String fileName = filename + "." + base[0]; // 生成的新文件
        InputStream is = null;
        try {
            // 解码,而后将字节转换为文件
            byte[] bytes = new BASE64Decoder().decodeBuffer(string); // 将字符串转换为byte数组
            out = new FileOutputStream(filePath + fileName);
            out.write(bytes);
            // 解码,而后将字节转换为文件
            // Base64解码
            is = new ByteArrayInputStream(bytes);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } finally {
            out.close();
            //deleteFile(filePath + fileName);
        }
        return is;
    }

    public static void deleteFile(String path) {
        File file = null;
        try {
            if (StringUtils.trimToNull(path) != null) {
                file = new File(path);
                if (file != null) {
                    if (file.isFile()) {
                        file.delete();
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();

        } finally {
        }
    }

    public static void main(String[] args) throws IOException {
        // String basestr = Base64ConvertByFile.ioToBase64();
        // Base64ConvertByFile.base64ToIo("11111111111111", basestr);
        String fileName = "d:/ddd.doc";
        String strBase64 = null;
        strBase64 = fileName.substring(fileName.lastIndexOf("."), fileName.length()).split("\\.")[1] + ";";
        System.out.println(strBase64);
    }
}

spring

相关文章
相关标签/搜索