package xin.glue.ui.common.blob; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import java.util.zip.GZIPOutputStream; //import java.util.zip.ZipOutputStream; import xin.glue.ui.common.PosDBEngine; import com.posdata.glue.biz.constants.PosBizControlConstants; import com.posdata.glue.context.PosContext; import com.posdata.glue.web.control.PosMultipartRequest; public class PosFileUpload extends PosDBEngine { public String runActivity(PosContext ctx) { PosMultipartRequest request = ctx.getMultiPartRequest(); if(request == null) return PosBizControlConstants.SUCCESS; setParamMap(ctx, "sqlkey", "param"); for (Iterator iter = request.getFileNames(); iter.hasNext(); ) { InputStream in = request.getInputStream(iter.next().toString()); try { ByteArrayOutputStream bout = new ByteArrayOutputStream(in.available()); //建立 gzip 压缩输出流 GZIPOutputStream gzout = new GZIPOutputStream (bout); //设定读入缓冲区尺寸 byte[] buf = new byte[1024 * 2]; int byteRead; while ((byteRead = in.read(buf)) != -1) { gzout.write(buf, 0, byteRead); } //这个在写入 ByteArrayOutputStream 时一定要有,否则不能完全写入 gzout.finish(); ctx.put("BLOBFILE", bout.toByteArray()); Execute(ctx, "sqlkey", "param", 'i'); in.close(); bout.close(); gzout.close(); } catch (IOException e) { logger.logError(e.getMessage().substring(0, 100)); } } return PosBizControlConstants.SUCCESS; } }