Запись файлов в Blobstore AppEngine и передача клиенту - PullRequest
0 голосов
/ 16 ноября 2011

Цель: Клиент отправляет входные данные на сервер (App Engine). Сервер изменяет ввод, создает файл с выводом и передает его клиенту. Проект GWT.

Это схема моего кода (на стороне сервера и на стороне клиента), но Я не знаю, как передать файл клиенту . Всякий раз, когда я пытаюсь ввести импорт BlobStore на стороне клиента, я получаю ошибки во время выполнения (но не во время сборки или компиляции).

Запись файлов в Blobstore помечена как экспериментальная (http://code.google.com/appengine/docs/java/blobstore/overview.html#Writing_Files_to_the_Blobstore). Возможно, она еще не работает? Не могли бы вы помочь мне с этой проблемой? Даже если она не использует BLOB-объекты, пока выполняется указанная выше цель. Спасибо.

ProjectServiceImpl.java

public class ProjectServiceImpl extends RemoteServiceServlet implements ProjectService 
{
    public String project(String input) throws IllegalArgumentException 
    {
        String output = doSomethingWith(input);
        FileService fileService = FileServiceFactory.getFileService();
        AppEngineFile file = fileService.createNewBlobFile("text/plain");
        boolean lock = true;
        FileWriteChannel writeChannel = fileService.openWriteChannel(file, lock);
        writeChannel.write(ByteBuffer.wrap("Hello world!".getBytes()));
        writeChannel.closeFinally();
        BlobKey blobKey = fileService.getBlobKey(file);
        BlobstoreService blobService = BlobstoreServiceFactory.getBlobstoreService();
    }
}

ProjectService.java

public interface ProjectService extends RemoteService {
    String project(String name) throws IllegalArgumentException;
}

ProjectServiceAsync.java

public interface ProjectServiceAsync {
    void project(String input, AsyncCallback<String> callback)
            throws IllegalArgumentException;
}

MyProject.java: Клиентская сторона

[...]
projectService.project(originalString, new AsyncCallback<String>() {
    [...]
    public void onSuccess(final String result) 
    {
        BlobstoreService blobService = BlobstoreServiceFactory.getBlobstoreService();
    }
});

1 Ответ

2 голосов
/ 17 ноября 2011

Нельзя использовать API-интерфейсы App Engine, включая API-интерфейс blobstore, на стороне клиента. API доступны только для приложения App Engine, но не для пользователя Javascript. Чтобы подать каплю, следуйте инструкциям здесь .

...