3

私のアプリ(GAEのGWT)では、blobstoreに保存されているサービングURLをデータベースに保存しています。ユーザーがこれらのファイルの1つを選択して[削除]をクリックすると、blobstoreからファイルを削除する必要があります。

これは私たちのコードですが、ファイルをまったく削除していません:

public void remove(String fileURL)
{
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
    String key = getBlobKeyFromURL(fileURL);
    BlobKey blobKey = new BlobKey(key);
    blobstoreService.delete(blobKey);
}

fileURLこのように見える場所:

http://lh6.ggpht.com/d5VC0ywISACeJRiC3zkzaZug-tPsaI_LGt93-e_ATGTCwnGLao4yTWjLVppQ

そしてgetBlobKeyFromURL()、この例では、最後の「/」の後にあるものを返します。

d5VC0ywISACeJRiC3zkzaZug-tPsaI_LGt93-e_ATGTCwnGLao4yTWjLVppQ

*編集: * getBlobKeyFromURL()が返すのはblobKeyではないようです。blobKeyは別の文字列であり、/download?blob-key=以前は。を返しますfileURL。したがって、質問は次のようになります。URLからblobKeyを取得するにはどうすればよいですか。

アドバイスをいただけますか?

ありがとう

4

2 に答える 2

3

配信URLから元のブロブキーを取得する方法はありません。これを実行したい場合は、URLを生成するときにURL->BlobKeyマッピングをデータストアに保存することをお勧めします。

于 2012-12-01T11:45:01.993 に答える
-1

www.example.com/?name=yourUrlwanttodeleteなどのURLパラメータを使用すると、次のコードがsnippedでblobkeyが返されます。

public class ShowImage extends HttpServlet { private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobs toreService();

public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doPost(req, res); }

public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String par = req.getParameter("name"); if (par != null) { Query query = new Query("__BlobInfo__");

query.addFilter("filename", Query.FilterOperator.EQUAL, req.getParameter("name"));

DatastoreService datastore = DatastoreServiceFactory.getDatas toreService(); PreparedQuery pq = datastore.prepare(query); List<Entity> entList = pq.asList(FetchOptions.Builder.w ithLimit(1)); if (entList.size() > 0) { BlobKey blobKey = new BlobKey(entList.get(0).getKey(). getName());
于 2012-11-03T13:29:24.367 に答える