All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.redkale.net.http.MultiPart Maven / Gradle / Ivy

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.redkale.net.http;

import java.io.*;
import java.util.concurrent.atomic.AtomicLong;

/**
 *
 * 

详情见: https://redkale.org * @author zhangjx */ public final class MultiPart { private final String filename; private final String name; private final String contentType; private final InputStream in; private final AtomicLong received; MultiPart(String filename, String name, String contentType, AtomicLong received, InputStream in) { this.filename = filename; this.name = name; this.in = in; this.contentType = contentType; this.received = received; } @Override public String toString() { return this.getClass().getSimpleName() + "{" + "name=" + name + ", filename=" + filename + ", contentType=" + contentType + ", received=" + received + '}'; } public boolean save(File file) throws IOException { return save(Long.MAX_VALUE, file); } public boolean save(long max, File file) throws IOException { OutputStream out = new FileOutputStream(file); boolean rs = save(max, out); out.close(); return rs; } public byte[] getContentBytes() throws IOException { return getContentBytes(Long.MAX_VALUE); } /** * 将文件流读进bytes, 如果超出max指定的值则返回null * * @param max 最大长度限制 * @return 内容 * @throws IOException 异常 */ public byte[] getContentBytes(long max) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); return save(max, out) ? out.toByteArray() : null; } public boolean save(OutputStream out) throws IOException { return save(Long.MAX_VALUE, out); } /** * 将文件流写进out, 如果超出max指定的值则中断并返回false * * @param max 最大长度限制 * @param out 输出流 * @return 是否成功 * @throws IOException 异常 */ public boolean save(long max, OutputStream out) throws IOException { byte[] bytes = new byte[4096]; int pos; InputStream in0 = this.getInputStream(); while ((pos = in0.read(bytes)) != -1) { if (max < 0) return false; out.write(bytes, 0, pos); max -= pos; } return true; } public String getContentType() { return contentType; } public String getFilename() { return filename; } public String getName() { return name; } public InputStream getInputStream() { return in; } public long getReceived() { return received.get(); } public void skip() throws IOException { in.skip(Long.MAX_VALUE); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy