1

Processing에서 Google Cloud Storage로 사진을 업로드하려고하지만 저장 공간을 볼 때 공백 이미지 만 있습니다.Google Cloud Storage에 사진 업로드시 공백 만 포함

"처리를위한 HTTP 요청"라이브러리를 사용하여 이미지를 업로드하고 있습니다. https://cloud.google.com/storage/docs/json_api/v1/how-tos/simple-upload#sending_a_simple_upload_request

이 있습니다 : 여기

Reponse Content: { 
    "kind": "storage#object", 
    "id": "hs_test01/person0.jpg/1468064800417000", 
    "selfLink": "https://www.googleapis.com/storage/v1/b/hs_test01/o/person0.jpg", 
    "name": "person0.jpg", 
    "bucket": "hs_test01", 
    "generation": "1468064800417000", 
    "metageneration": "1", 
    "contentType": "image/jpeg", 
    "timeCreated": "2016-07-09T11:46:40.413Z", 
    "updated": "2016-07-09T11:46:40.413Z", 
    "storageClass": "STANDARD", 
    "size": "1101980", 
    "md5Hash": "msH3vhzgwNKPd5aRXfy/vA==", 
    "mediaLink": "https://www.googleapis.com/download/storage/v1/b/hs_test01/o/person0.jpg?generation=1468064800417000&alt=media", 
    "crc32c": "nGKW7A==", 
    "etag": "COjJvsen5s0CEAE=" 
    } 

내가 지금까지 수행 한 튜토리얼입니다 :이 API에서

import http.requests.*; 

    int number = 0; 

    void setup(){ 
    size(640,480); 
    } 

    void draw() { 

    if(number < 1) { 
     PostRequest post = new PostRequest("https://www.googleapis.com/upload/storage/v1/b/hs_test01/o?uploadType=media&name=person0.jpg&access_token=ya29.Ci8aA6-n96angt2d9mIyDUL2_4bHP5ybP-5deHb3zbnpbwFgwAGD5vx2LlydFwCjBA"); 
     File f = new File(sketchPath("data/test.jpg")); 
     post.addFile("image/jpeg", f); 
     long size = f.length(); 
     println(size); 
     post.addHeader("Content-Type","image/jpeg"); 
     post.addHeader("Content-Length","163155"); 
     post.send(); 
     println("Reponse Content: " + post.getContent()); 
     println("Reponse Content-Length Header: " + post.getHeader("Content-Length")); 
    } 
    number++; 
    } 

응답 : 여기

다음 코드 (업데이트)입니다 또한 힌트, 그 그림의 내용 길이 (그것의 바이트)를 제공해야합니다. 이 때문에 저장소에 공백 이미지 만 표시 될 수 있습니까? 그렇다면 어떻게 이미지의 바이트를 자동으로 읽을 수 있습니까? The result of the uploaded pic so far

+0

이 문제를 재현하지 못했습니다. 이 흰색 이미지의 원인을 확인 했습니까? 아래에 제공된 답변이 도움이 되었습니까? – Nicholas

+0

@Nicholas 죄송합니다, 귀하의 코멘트를 보지 못했습니다. 안타깝게도 아뇨, 파이썬으로 가서 Google의 gsutil 도구를 사용 했더니 작동했습니다. – SeGa

답변

0

당신은 File#length() function 사용하여 파일의 크기를 얻을 수 있습니다 :

이 추상 패스 명이 나타내는 파일의 길이를 돌려줍니다. 이 경로명이 디렉토리를 나타내는 경우 반환 값은 지정되지 않습니다.

File f = new File(sketchPath("data/test.jpg")); 
long size = f.length(); 
+0

그것으로부터 길이를 얻지 만 결함이 아니었다. 여전히 저장 장치에 그림이 없다. – SeGa

+0

@SeGa 실제로 헤더를 설정하고 있습니까? 업데이트 된 코드를 [mcve]로 게시 할 수 있습니까? –

+0

확실합니다. 지금 질문에서 업데이트되었습니다. 그리고 파일 자체에는 올바른 파일 크기가 있으며 회색 테두리가있는 흰색 이미지 만 표시됩니다. 내 질문이 끝나면 이미지를 링크로 게시했습니다. 코드는 작동해야하며 토큰 만 만료되었으므로 필요한 경우 새 토큰을 생성해야합니다. – SeGa

0

내가 파일 업로드의 경우 여러 부분 엔티티 빌더와 같은 패키지를 사용하도록 추천 할 것입니다. 다음은 sample입니다. 콘텐츠 길이는 여기에 필요하지 않습니다. 그리고 동일한 것을 읽으려면 InputStreamReader를 사용할 수 있습니다.

+0

Google APi에는 다중 업로드 옵션이 있습니다. – SeGa

관련 문제