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);
}

}

この同じサーブレットで、クライアントを doGet にリダイレクトしようとしています。と なしでこれを試しましgwt.codesvr=127.0.0.1:9997shipHullName=" + shipHull.getShipHullName())が、 doGet 関数には到達しません。私も試しhttps://www.google.comました。

これはすべて開発サーバーで行われています (まだ実稼働サーバーで試していません)。

画像保存のステータスを返す他の方法がある場合 (ファイル名が既に取得されている場合など)、別の方法を試してもかまいません。

ありがとう!

4

2 に答える 2

0

私は問題を理解しました。私はこの投稿と同じ問題を抱えていたと思います。

GWT 開発モード ツールボックス アイコンをクリックし、Web サーバー "ammo-box" (コンピューターの名前) とコード サーバーを "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 に答える