2013-08-04 2 views
7

오류로 인한은 구글 앱 엔진 Blob 저장소 및으로 Restlet은

"의 Blob 업로드 콜백 요청에서 호출되어야합니다." com.google.appengine.api.blobstore.BlobstoreServiceImpl.getUploads (BlobstoreServiceImpl.java:169)

코드

public class UserUploadProfilePictureResource extends ServerResource { 

    @Post 
    public void handleBlobstoreUpload(Representation entity) { 

     Representation rep =null; 

     if (entity !=null) { 

      if (MediaType.MULTIPART_FORM_DATA.equals(entity.getMediaType(), true)) { 
       Request restletRequest = getRequest(); 
       HttpServletRequest servletRequest = ServletUtils.getRequest(restletRequest); 

       BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 

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

가능한 솔루션에서 (하지만 난하지 않을 것)

처음. 두 번째 HttpServlet을 호출하고 싶지 않습니다.

초.

하는 것은 추천하지 않습니다 : 사용 된 파일 API 기능

구글이 다음 말한다 :이 게시물에 관련하여 파일을 수동으로 작성하는 솔루션이있다 여기에 파일을 쓰려면 블로 브 스토어가 나중에 언젠가는 제거 될 것입니다.은 Google Cloud Storage에 파일을 쓰고 Blobstore를 사용하여 을 제공합니다.

수 Solution2 (그러나 해결 방법에 대해서만 개념)

http://www.cloudave.com/1055/the-new-google-app-engine-blobstore-api-first-thoughts/

브렛 슬래트 킨이 API를 제조 할 때 POST URL이 가 파일을 업로드에 사용되는 것을 지적, 잠재적 인 스니핑을 완화하는 고유 한 URL 인 을 만듭니다.

사용자가 웹 양식 을 제출할 때이 시나리오에 완벽하게 맞습니다. 그러나 파일을 업로드 할 수있는 REST API를 제공하려는 경우 (예 : TwitPic과 같은 을 생각해보십시오.) 더 힘들어집니다. 이 경우 당신은 자신이 웹 양식을 어떻게 할 것인지 시뮬레이션 렌더링 작성해야 (즉, 파일을 가져 호출, 무작위 POST URL을 생성, ...)

질문

Google 앱 엔진에 이미지를 저장하는 최선의 방법은 무엇입니까? 블롭 스토어보다 더 좋은 방법이 있습니까? 블롭 스토어에 이미지를 저장하려면 어떻게해야합니까?

+0

일부 코드가 삭제되었습니다. blobstoreService.createUploadUrl (path)을 어디에서 호출할까요? 해당 함수를 호출하지 않으면 문제가 발생합니다. – tkaitchuck

+0

@tkaitchuck'blobstoreService.getUploads' 전에 호출하려고했습니다. 그러나 그것은 행동에서 아무 것도 바뀌지 않았습니다. –

답변

3

Google Cloud Storage 클라이언트 라이브러리는 https://developers.google.com/appengine/docs/java/googlecloudstorageclient/입니다. 공식적으로 지원되는 선택은 Google Cloud Storage 클라이언트 라이브러리입니다. 블롭 스토어를 통한 클라우드 스토리지 사용을 촉진하기 위해 프로그래밍 방식으로 브로 쓰 스토어에 작성하는 것을 더 이상 지원하지 않을 것입니다. 이미지 및 blobstore api는 Blobstore 키를 생성 및 저장하고 이미지 URL/크기 조정 등을 생성하기 위해 GCS에서 작동합니다.

다른 많은 비공식적 인 방법은 파일 API 원본을 복사하여 직접 유지하는 것입니다. 멀리 또는 항상 사용할 수있는 rpc 호출을 사용하지만 정확히 모르겠습니다.

+2

미안하지만 그건 해결책이 아닙니다. 이것은 또 다른 기술입니다 ... 그렇다면 아마존 s3에게도 조언 할 수 있습니다. blobstore는 내 워크 플로에 비해 저렴하고 충분히 사용하기 때문에 사용하고 싶습니다. –

+2

이 다른 기술은 실제로 blobtstores API 및 앱 엔진과 긴밀하게 통합되어 있습니다. 또한 가격은 s3보다 저렴하고 blobstore 자체는 BLOBstore 및 Cloudstorage 이상의 비용을 지불하는 무료 5GB 한도를 전달하기 만하면됩니다. 따라서이 서버는 기능과 유사한 기능을 내장하고 있으므로 에지 서버에서 자동 캐시됩니다. – Faisal