예제 #1
0
파일: Upload.java 프로젝트: j112929/alogic
  public void handle(FileItem item, Map<String, Object> result) {
    BlobWriter writer = blobManager.newFile(item.getContentType());
    OutputStream out = writer.getOutputStream();
    InputStream in = null;
    try {
      in = item.getInputStream();

      try {
        int size = 0;

        while ((size = in.read(buffer)) != -1) {
          out.write(buffer, 0, size);
        }
      } finally {
        IOTools.close(in, out);
      }

      BlobInfo info = writer.getBlobInfo();
      result.put("fileId", info.id());
      result.put("contentType", info.contentType());
      result.put("md5", info.md5());
      result.put("sucessful", "true");

      blobManager.commit(writer);
    } catch (Exception ex) {
      result.put("sucessful", "false");
      blobManager.cancel(writer);
    }
  }
예제 #2
0
  public int actionProcess(Context ctx) throws Exception {
    ctx.asMessage(BlobMessage.class);

    String fileId = getArgument("fileId", ctx);
    String domain = getArgument("domain", "default", ctx);

    BlobManager manager = BlobTool.getBlobManager(domain);
    if (manager == null) {
      throw new ServantException(
          "core.blob_not_found", "Can not find a blob manager named " + domain);
    }

    BlobReader reader = manager.getFile(fileId);
    if (reader == null) {
      throw new ServantException("core.blob_not_found", "Can not find a blob file named " + fileId);
    }

    BlobInfo info = reader.getBlobInfo();

    ctx.setResponseContentType(info.contentType());

    InputStream in = reader.getInputStream(0);
    OutputStream out = ctx.getOutputStream();

    try {
      int size = 0;

      while ((size = in.read(buffer)) != -1) {
        out.write(buffer, 0, size);
      }
    } finally {
      IOTools.close(in);
    }

    return 0;
  }