2

我让gwt-upload在 GAE 应用程序中工作。正如建议的那样,我实现了一个自定义 UploadAction 来处理 DataStore 中文件的存储。代码如下:

public String executeAction(HttpServletRequest request,
        List<FileItem> sessionFiles) throws UploadActionException {
    logger.info("Starting: DatastoreUploadAction.executeAction");
    String executeAction = super.executeAction(request, sessionFiles);

    for (FileItem uploadedFile : sessionFiles) {            
        Long entityId = new Long(2001); // This is where i wanna use a request parameter
        InputStream imgStream;
        try {
            imgStream = uploadedFile.getInputStream();
            Blob attachment = new Blob(IOUtils.toByteArray(imgStream));
            String contentType = uploadedFile.getContentType();
            appointmentDao.setAppointmentAttachment(entityId, attachment,
                    contentType);
        } catch (IOException e) {
            logger.error("Unable to store file", e);
            throw new UploadActionException(e);
        }

    }

    return executeAction;
}

如您所见,DAO 类需要“EntityID”来将上传的文件存储在 DataStore 中。现在我正在使用一个硬编码的值,它运行良好,但我希望客户端发送的 entityID 作为请求参数。上传的小部件是 MultiUploader:

private MultiUploader defaultUploader;

MultiUploader - 或任何其他小部件 - 是否可以设置请求参数以便我可以在我的 UploadAction 中使用它?

4

1 回答 1

4

是的,您可以在客户端代码上设置它。
有方法:MultiUploader #setServletPath(java.lang.String),例如:

  final MultiUploader u = new MultiUploader();
  ...
  ...
  ...
  u.setServletPath(u.getServletPath() + "?entityId="+myObject.getEntityId());

在服务器端:

  String entityId= request.getParameter("entityId"); 

阅读本文以获取更多信息:向 servlet 发送附加参数

于 2012-03-01T06:18:25.817 回答