net.wicp.tams.component.response.FileStreamResponse Maven / Gradle / Ivy
package net.wicp.tams.component.response;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.tapestry5.StreamResponse;
import org.apache.tapestry5.http.services.Response;
import net.wicp.tams.common.apiext.IOUtil;
public class FileStreamResponse implements StreamResponse {
private final String fileName;
private final byte[] byteAry;
public FileStreamResponse(File file, String fileName) throws IOException {
this(new FileInputStream(file), fileName);
}
public FileStreamResponse(File file) throws IOException {
this(file, file.getName());
}
public FileStreamResponse(InputStream inputStream, String fileName) throws IOException {
byte[] slurpbyte = IOUtil.slurpbyte(inputStream);
inputStream.close();//是关闭流?
this.fileName = fileName;
this.byteAry = slurpbyte;
}
public FileStreamResponse(InputStream inputStream) throws IOException {
this(inputStream, "下载文件");
}
public FileStreamResponse(byte[] byteAry, String fileName) {
this.fileName = fileName;
this.byteAry = byteAry;
}
@Override
public String getContentType() {
return "application/octet-stream";
}
@Override
public InputStream getStream() throws IOException {
return new ByteArrayInputStream(this.byteAry);
}
@Override
public void prepareResponse(Response response) {
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
}
}