App Engine не удается загрузить больше, чем 33MB - PullRequest
0 голосов
/ 01 ноября 2018

Код ниже взят прямо из google apis github для загрузки файла из GCS. Я изменил его, чтобы иметь возможность загрузить файл на локальный компьютер.

Если размер файла превышает 33 МБ, приложение прекратит попытки через 2 минуты или менее. Я думаю, что я прочитал, что ограничение движка приложения составляет 32 или 33. Хотя я не вижу, чтобы что-то увеличивалось в квотах. Может ли кто-нибудь указать мне правильное направление относительно того, как с этим справиться?

    if (blob.getSize() < 1_000_000) {
        // Blob is small read all its content in one request
        byte[] content = blob.getContent();
        outStream.write(content);
        outStream.close();
    } else {
        // When Blob size is big or unknown use the blob's channel reader.
        try (ReadChannel reader = blob.reader()) {
            WritableByteChannel channel = Channels.newChannel(outStream);
            ByteBuffer bytes = ByteBuffer.allocate(64 * 1024);
            while (reader.read(bytes) > 0) {
                bytes.flip();
                channel.write(bytes);
                bytes.clear();
            }
        }
    }

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Отправьте клиенту по прямой ссылке. Прямая ссылка не имеет ограничений. Убедитесь, что клиент может получить доступ к ссылке, установив правильные ACL и / или разрешения в GCP. Будьте осторожны с безопасностью ссылки, не открывая ее для публики.

response.sendRedirect ( "google.com");

0 голосов
/ 18 декабря 2018

Максимальный размер файла для App Engine составляет 32 МБ (за исключением среды Golang, которая составляет 64 МБ). Вы не можете загрузить файл больше этого размера из Google Cloud Storage (или любого другого источника). При развертывании приложения вы также не можете включить в развертывание файл размером более 32 МБ. Это задокументировано здесь . Ищите абзац под названием Static data limit

...