Как использовать BlobStore для загрузки файлов типа DOC и PDF - PullRequest
0 голосов
/ 07 марта 2012

Я использую веб-приложение в GWT, которое загружает файл размером> 1 МБ и вводит doc и pdf. Я использую BlobStore. На самом деле я должен сохранить этот файл в хранилище. Сессия этого хранилища уже создана и работает нормально.

код

  // Get The URL
  public void onClick(ClickEvent event) {
          System.out.println("blob" +blobServices);
        blobServices
            .getBlobStoreUploadUrl(callback) ;
      }
    });

Приведенный выше вызов RPC работает нормально, я могу получить URL. Теперь я должен использовать этот URL с сервлетом, который используется для загрузки файла.

   AsyncCallback callback = new AsyncCallback() {

    public void onFailure(Throwable caught) {
        // TODO Auto-generated method stub
        caught.printStackTrace();
    }

    public void onSuccess(Object result) {
    String tmp = result.toString();
        uploadForm.setAction(tmp);

        // Submit the form to complete the upload
        uploadForm.submit();
        uploadForm.reset();
    }
};

На стороне сервера

 public class UploadServiceImpl extends HttpServlet {

       BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();

 public void doPost(HttpServletRequest req, HttpServletResponse res)
      throws ServletException, IOException {

    Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req);
    BlobKey blobKey = blobs.get("upload");
  }

 }

Я не знаю, что делать после этого. Может ли кто-нибудь сказать мне код или ссылку, чтобы понять эту часть. Я хочу размер файла и содержание файла. Наиболее важным является файл типа .doc и .pdf, а не изображение.

1 Ответ

0 голосов
/ 30 марта 2012

Так как вы не можете получить имя и тип файла во время вызова хранилища, я делаю это, записывая имя файла в клиентской форме и сохраняя его в скрытом поле. Когда пользователь использует форму загрузки, вы можете получить имя файла из любого выбранного вами средства выбора. Затем, когда вы отправляете сообщение в UploadServiceImpl, вы можете получить имя файла из

req.getParameter (hiddenfieldname).

...