0

我正在创建一个需要图像上传功能的应用程序。我一直在关注教程和App Engine 文档

图片上传正确,服务器重定向到FileUpload HttpServlet的doPost函数。我可以从请求中读取 blob 密钥并将其保存在数据存储中。

我的问题是将响应发送回客户端。我所看到的一切都指向使用 response.sendRedirect 函数,但这还没有成功。

public class FileUpload extends HttpServlet 
{
public void doPost(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException
{
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();

    Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(request);

    BlobKey blobKey = blobs.get("picFileUpload").get(0);

    ShipHull shipHull = new ShipHull();
    shipHull.setShipHullName(request.getParameter("hullNameText"));
    shipHull.setShipImageURL("/shipbuilder/blobService?blob-key=" + blobKey.getKeyString());

    PersistenceManager pm = PMF.get().getPersistenceManager();

    try
    {
        pm.makePersistent(shipHull);
    }
    catch (Exception e)
    {
        String hi = "hello";
    }
    finally
    {
        pm.close();
    }

    Boolean test = response.isCommitted();

    response.sendRedirect("/shipbuilder/FileUpload?gwt.codesvr=127.0.0.1:9997&shipHullName=" + shipHull.getShipHullName());

    test = response.isCommitted();

    return;
}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException 
{
    String id = req.getParameter("shipHullName");
    resp.setHeader("Content-Type", "text/html");
    resp.getWriter().println(id);
}

}

我正在尝试将客户端重定向回同一个 servlet 中的 doGet。我已经尝试过这个并且没有gwt.codesvr=127.0.0.1:9997and theshipHullName=" + shipHull.getShipHullName())但是 doGet 函数永远不会到达。我也试过了https://www.google.com

这一切都在开发服务器上完成(尚未在生产服务器上尝试过)。

如果您有任何其他返回图像保存状态的方法(例如,如果文件名已被使用),我不介意尝试不同的方法。

谢谢!

4

2 回答 2

0

我已经弄清楚了问题所在。我想我和这篇文章有同样的问题。

我必须单击 GWT 开发模式工具箱图标并添加网络服务器“弹药箱”(我的计算机名称)和代码服务器为“127.0.0.1”。当我将浏览器定向到该开发链接时,一切正常,甚至你给SSR的答案。这是一个域切换问题。

谢谢您的帮助。

于 2013-02-14T00:59:40.523 回答
0

您可以尝试将成功/失败的字符串放入 resp 对象中。

public void doPost( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException
{
 try{
   processFileUploads(req)
   resp.getWriter().print( "Success" );
 }{
 catch(Exception e){
   resp.getWriter().println( "Unable to upload the file - Upload Failed" );
 }
}
于 2013-02-04T19:01:36.960 回答