22632673d87c2c8df0f44720d45af2ef1888be8f.svn-base 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package xin.glue.ui.common.blob;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.Iterator;
  6. import java.util.zip.GZIPOutputStream;
  7. //import java.util.zip.ZipOutputStream;
  8. import xin.glue.ui.common.PosDBEngine;
  9. import com.posdata.glue.biz.constants.PosBizControlConstants;
  10. import com.posdata.glue.context.PosContext;
  11. import com.posdata.glue.web.control.PosMultipartRequest;
  12. public class PosFileUpload extends PosDBEngine {
  13. public String runActivity(PosContext ctx) {
  14. PosMultipartRequest request = ctx.getMultiPartRequest();
  15. if(request == null)
  16. return PosBizControlConstants.SUCCESS;
  17. setParamMap(ctx, "sqlkey", "param");
  18. for (Iterator iter = request.getFileNames(); iter.hasNext(); ) {
  19. InputStream in = request.getInputStream(iter.next().toString());
  20. try {
  21. ByteArrayOutputStream bout = new ByteArrayOutputStream(in.available());
  22. //建立 gzip 压缩输出流
  23. GZIPOutputStream gzout = new GZIPOutputStream (bout);
  24. //设定读入缓冲区尺寸
  25. byte[] buf = new byte[1024 * 2];
  26. int byteRead;
  27. while ((byteRead = in.read(buf)) != -1) {
  28. gzout.write(buf, 0, byteRead);
  29. }
  30. //这个在写入 ByteArrayOutputStream 时一定要有,否则不能完全写入
  31. gzout.finish();
  32. ctx.put("BLOBFILE", bout.toByteArray());
  33. Execute(ctx, "sqlkey", "param", 'i');
  34. in.close();
  35. bout.close();
  36. gzout.close();
  37. } catch (IOException e) {
  38. logger.logError(e.getMessage().substring(0, 100));
  39. }
  40. }
  41. return PosBizControlConstants.SUCCESS;
  42. }
  43. }