文件转base64字符串
/**
* file转换为base64
* 注意:这里转换为base64后,是不包含文件head头的
*/
public static string filetobase64(file file) {
base64.encoder base64 = base64.getencoder();
string base64str = null;
try (fileinputstream fis = new fileinputstream(file);
bytearrayoutputstream bos = new bytearrayoutputstream()) {
byte[] b = new byte[1024];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
base64str = base64.encodetostring(bos.tobytearray());
} catch (ioexception e) {
e.printstacktrace();
}
return base64str;
}
base64字符串转文件
/**
* base64转化为file,并保存到指定路径下
*/
public static void base64tofile(string base, string path) {
if (stringutils.isblank(base)) {
return;
}
base64.decoder decoder = base64.getdecoder();
try (outputstream out = new fileoutputstream(path)) {
byte[] bytes = decoder.decode(base);
for (int i = 0; i < bytes.length; ++i) {
if (bytes[i] < 0) {
bytes[i] += 256;
}
}
out.write(bytes);
out.flush();
} catch (ioexception e) {
e.printstacktrace();
}
}
base64转化为file流
/**
* base64转化为file流
*/
public static file base64tofile(string base64) {
if (base64 == null || "".equals(base64)) {
return null;
}
byte[] buff = base64.getdecoder().decode(base64);
file file;
try {
file = file.createtempfile("tmp", null);
} catch (ioexception e) {
e.printstacktrace();
return null;
}
try (fileoutputstream out = new fileoutputstream(file)) {
out.write(buff);
} catch (ioexception e) {
e.printstacktrace();
}
return file;
}
base64转multipartfile
import org.springframework.web.multipart.multipartfile;
import java.io.*;
import java.util.base64;
/**
* @author 笑小枫
*/
public class base64decodedmultipartfile implements multipartfile {
private final byte[] imgcontent;
private final string header;
private final string filename;
public base64decodedmultipartfile(byte[] imgcontent, string header, string filename) {
this.imgcontent = imgcontent;
this.header = header.split(";")[0];
this.filename = filename;
}
@override
public string getname() {
return filename + "." + header.split("/")[1];
}
@override
public string getoriginalfilename() {
return filename + "." + header.split("/")[1];
}
@override
public string getcontenttype() {
return header.split(":")[1];
}
@override
public boolean isempty() {
return imgcontent == null || imgcontent.length == 0;
}
@override
public long getsize() {
return imgcontent.length;
}
@override
public byte[] getbytes() {
return imgcontent;
}
@override
public inputstream getinputstream() {
return new bytearrayinputstream(imgcontent);
}
@override
public void transferto(file dest) throws ioexception, illegalstateexception {
try (fileoutputstream fos = new fileoutputstream(dest)) {
fos.write(imgcontent);
}
}
/**
* base64转multipartfile
**/
public static multipartfile base64convert(string base64, string header, string filename) {
base64.decoder decoder = base64.getdecoder();
byte[] b = decoder.decode(base64);
//取索引为1的元素进行处理
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
// 处理过后的数据通过base64decodemultipartfile转换为multipartfile对象
return new base64decodedmultipartfile(b, header, filename);
}
}
byte数组转multipartfile
- pom导入
<dependency>
<groupid>org.apache.httpcomponents</groupid>
<artifactid>httpclient</artifactid>
<version>4.5.5</version>
</dependency>
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-test</artifactid>
<version>release</version>
</dependency>
- 代码部分
byte[] bytes = message.getpacket(); inputstream inputstream = new bytearrayinputstream(bytes); multipartfile file = new mockmultipartfile(contenttype.application_octet_stream.tostring(), inputstream);
multipartfile转化为byte数组
byte[] bytes= file.getbytes();
以上就是java中file、base64、multipartfile之间相互转换的代码详解的详细内容,更多关于java file、base64、multipartfile转换的资料请关注代码网其它相关文章!
发表评论