2

GAE アプリケーションで gwt-upload が動作するようになりました。提案どおり、カスタム 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 クラスは、アップロードされたファイルを DataStore に格納するために「EntityID」を必要とします。今、私はハードコードされた値で作業していますが、それはうまくいきますが、entityID をクライアントから要求パラメーターとして送信したいと思います。アップロードを行うウィジェットは MultiUploader です。

private MultiUploader defaultUploader;

MultiUploader (またはその他のウィジェット) でリクエスト パラメータを設定して UploadAction で使用できるようにすることはできますか?

4

1 に答える 1

4

はい、クライアント側のコードで設定できます。
method: があります。MultiUploader #setServletPath(java.lang.String)例:

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

サーバー側:

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

詳細については、これをお読みください:サーブレットへの追加パラメーターの送信

于 2012-03-01T06:18:25.817 に答える