1

사용자가 CSV를 GAE 블롭 저장소에 업로드 할 수있는 간단한 웹 앱이 있습니다. Google 애널리틱스 API 메소드에 해당 데이터를 전달하려고 시도하지만 어떻게 작동하지 못합니다. 튜토리얼 문서에 따라, 나는 단지 응답 헤더에서 파일을 반환 할 수있는 것 같습니다.Google App Engine에서 CSV 데이터에 액세스하려면 어떻게해야합니까?

blob을 메서드로 파일로 직접 전달할 수 있습니까?

또는 BLOB를 업로드 한 다음 Cloud Storage에 데이터를 매핑하는 방법이 있습니까?

+0

를 처리하는 서블릿에서

는 – omerio

+0

안녕 Omerio, 내가 업로드 API를 사용하고 문제의 웹 로그 분석 API에 대한 링크가 포함 당신이 할 수있는 -은 https : // 개발자 https : // developers. s.google.com/resources/api-libraries/documentation/analytics/v3/java/latest/com/google/api/services/analytics/Analytics.Management.Uploads.html –

+0

자세한 내용은 여기를 참조하십시오. google.com/analytics/devguides/config/mgmt/v3/mgmtDailyUploadGuide –

답변

2

https://cloud.google.com/appengine/docs/java/blobstore/ 코드를 따르는 경우 업로드 URL 설정 및 콜백 URL 제공 등을 안내합니다 ... 파일 업로드시 콜백 URL이 호출되면 blob 키를 기억해야하며, Datastore에서 blob을 다시 읽으려면 데이터 저장소에 저장하거나 세션에 보관하거나 필요할 때마다 저장할 수 있습니다.

아래의 코드는 특히에 관심이 방법은 getBlobAsString입니다 도움이 될 것입니다 또는 당신은 단순히 blobStream (BlobstoreInputStream blobStream = 새로운 BlobstoreInputStream (blobKey))를 사용할 수있는의 InputStream으로 주위의 파일 내용을 전달하는 업로드 콜백

import org.apache.commons.io.IOUtils; 

import com.google.appengine.api.blobstore.BlobKey; 
import com.google.appengine.api.blobstore.BlobstoreInputStream; 
import com.google.appengine.api.blobstore.BlobstoreService; 
import com.google.appengine.api.blobstore.BlobstoreServiceFactory; 

public class Upload extends HttpServlet { 
    private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 

    @Override 
    public void doPost(HttpServletRequest req, HttpServletResponse res) 
     throws ServletException, IOException { 

     Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req); 
     BlobKey blobKey = blobs.get("myFile"); 

     if (blobKey != null) { 
      String keyString = blobKey.getKeyString(); 
      // you can store keyString in the datastore or whatever 
      // if you want the call the analytics API then you need the blob as string 

      String csv = getBlobAsString(keyString); 

      // you can do with csv whatever you like, convert it as an array, etc... then pass it 
      // over to the analytic API 
     } 
    } 


    public static String getBlobAsString(String keyString) throws IOException { 
     BlobKey blobKey = new BlobKey(keyString); 
     BlobstoreInputStream blobStream = new BlobstoreInputStream(blobKey); 

     return IOUtils.toString(blobStream, "UTF-8"); 
    } 
} 
+0

아하! 감사합니다 omerio, 나는 이것과 연극을 가지고 내가 어떻게 일어나는지 볼 것입니다. –

관련 문제