1

Я пытаюсь загрузить изображение из «Обработка в облачное хранилище Google», но когда я смотрю в хранилище, у меня есть только пробельный образ.Загрузка изображения в Google Cloud Storage содержит только пробелы

Я использую библиотеку «HTTP Request for Processing» для загрузки изображений.

Вот следующий код (обновлено):

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++; 
    } 

Ответ от API:

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=" 
    } 

Вот учебник я следовал до сих пор: https://cloud.google.com/storage/docs/json_api/v1/how-tos/simple-upload#sending_a_simple_upload_request

Eсть также подсказка, что я должен предоставить длину содержимого изображения (байты). Может быть, из-за этого я получаю только пробельный образ в хранилище? Если да, как я могу автоматически прочитать байты изображения? The result of the uploaded pic so far

+0

Я не смог воспроизвести эту проблему. Вы определили причину этого белого изображения? Были ли какие-либо ответы, приведенные ниже, полезными для этого? – Nicholas

+0

@Nicholas Извините, не видел вашего комментария. Нет, к сожалению, нет, я подошел к Python и использовал инструмент gsutil от Google, и это сработало. – 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

Я бы порекомендовал вам использовать пакет Multipart Entity строитель в случае загрузки файлов. Вот sample. Контент-длина здесь не нужна. И чтобы прочитать то же самое, вы можете использовать InputStreamReader

+0

У Google APi также есть опция многостраничного скачивания, и я попробую – SeGa

Смежные вопросы