Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将文件写入Blobstore AppEngine并服务于客户端_Java_Google App Engine_Gwt_Blob_Blobstore - Fatal编程技术网

Java 将文件写入Blobstore AppEngine并服务于客户端

Java 将文件写入Blobstore AppEngine并服务于客户端,java,google-app-engine,gwt,blob,blobstore,Java,Google App Engine,Gwt,Blob,Blobstore,目标:客户端将字符串输入发送到服务器(应用程序引擎)。服务器修改输入,创建带有输出的文件,并将其提供给客户端。GWT项目 这是我的代码方案(服务器端和客户端),但我不知道如何将文件提供给客户端。每当我尝试在客户端输入任何BlobStore导入时,我都会在运行时(但不是在构建或编译时)出错 将文件写入Blobstore被标记为实验性的(http://code.google.com/appengine/docs/java/blobstore/overview.html#Writing_Files_t

目标:客户端将字符串输入发送到服务器(应用程序引擎)。服务器修改输入,创建带有输出的文件,并将其提供给客户端。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();
    }
}
public interface ProjectService extends RemoteService {
    String project(String name) throws IllegalArgumentException;
}
public interface ProjectServiceAsync {
    void project(String input, AsyncCallback<String> callback)
            throws IllegalArgumentException;
}
ProjectService.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();
    }
}
public interface ProjectService extends RemoteService {
    String project(String name) throws IllegalArgumentException;
}
public interface ProjectServiceAsync {
    void project(String input, AsyncCallback<String> callback)
            throws IllegalArgumentException;
}
ProjectServiceAsync.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();
    }
}
public interface ProjectService extends RemoteService {
    String project(String name) throws IllegalArgumentException;
}
public interface ProjectServiceAsync {
    void project(String input, AsyncCallback<String> callback)
            throws IllegalArgumentException;
}
公共接口ProjectServiceAsync{ 无效项目(字符串输入,异步回调) 抛出IllegalArgumentException; } MyProject.java:客户端

[...]
projectService.project(originalString, new AsyncCallback<String>() {
    [...]
    public void onSuccess(final String result) 
    {
        BlobstoreService blobService = BlobstoreServiceFactory.getBlobstoreService();
    }
});
[…]
projectService.project(originalString,new AsyncCallback(){
[...]
成功时公共无效(最终字符串结果)
{
BlobstoreService BlobsService=BlobstoreServiceFactory.getBlobstoreService();
}
});

您不能在客户端使用应用程序引擎API(包括blobstore API)。API仅适用于应用程序引擎应用程序,而不适用于用户Javascript。要提供一个blob,请按照说明操作。

谢谢,尼克!那么,只需在您提供的链接中添加service.java并将正确的blobKey传递给该类就足够了?不需要向MyProject.java添加任何Blob代码?我是否需要我的服务器端类来扩展HttpServlet而不是RemoteService,如链接中的示例所示?谢谢@user411103编写一个类似于演示中的servlet;它的工作原理取决于你想如何为你的斑点服务。您的servlet确实需要扩展HttpServlet。