La guía paso a paso o código que hallarás en este post es la resolución más sencilla y válida que encontramos a esta inquietud o dilema.
Solución:
Versión de almacenamiento:
google-cloud-storage
1.63.0
Preparación:
BlobId blobId = BlobId.of(BUCKET_NAME, date.format(BASIC_ISO_DATE) + "/" + prefix + "/" + file.getName());
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("application/gzip").build();
uploadToStorage(storage, file, blobInfo);
método principal:
private void uploadToStorage(Storage storage, File uploadFrom, BlobInfo blobInfo) throws IOException
// For small files:
if (uploadFrom.length() < 1_000_000)
byte[] bytes = Files.readAllBytes(uploadFrom.toPath());
storage.create(blobInfo, bytes);
return;
// For big files:
// When content is not available or large (1MB or more) it is recommended to write it in chunks via the blob's channel writer.
try (WriteChannel writer = storage.writer(blobInfo))
byte[] buffer = new byte[10_240];
try (InputStream input = Files.newInputStream(uploadFrom.toPath()))
int limit;
while ((limit = input.read(buffer)) >= 0)
writer.write(ByteBuffer.wrap(buffer, 0, limit));
Esto está sucediendo porque el array que es devuelto por Archivos.readAllBytes tiene un tamaño mayor al máximo permitido.
Una solución que puede hacer es dividir el archivo en varias matrices de bytes, cargarlos como archivos separados en el depósito y unirlos con el comando gsutil compose.
Sección de Reseñas y Valoraciones
Si tienes alguna indecisión o disposición de modernizar nuestro noticia puedes añadir una disquisición y con deseo lo leeremos.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)