画像アップロード機能が必要なアプリを作成しています。このチュートリアルと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:9997
たshipHullName=" + shipHull.getShipHullName())
が、 doGet 関数には到達しません。私も試しhttps://www.google.com
ました。
これはすべて開発サーバーで行われています (まだ実稼働サーバーで試していません)。
画像保存のステータスを返す他の方法がある場合 (ファイル名が既に取得されている場合など)、別の方法を試してもかまいません。
ありがとう!