summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2018-01-24 17:22:05 +0100
committerRobin Appelman <robin@icewind.nl>2018-01-24 17:22:05 +0100
commit3499cbdb76d264353d3d9f358601694bc4aae956 (patch)
treed277eafa0c6e24bbbd91e84b017400b478cffb2b /lib
parent4537faa5dabdcb2f0b888baa5031e59099e52d6a (diff)
downloadnextcloud-server-3499cbdb76d264353d3d9f358601694bc4aae956.tar.gz
nextcloud-server-3499cbdb76d264353d3d9f358601694bc4aae956.zip
Use S3Client::upload instead of splitting single/multipart upload ourselves
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib')
-rw-r--r--lib/private/Files/ObjectStore/S3ObjectTrait.php45
1 files changed, 2 insertions, 43 deletions
diff --git a/lib/private/Files/ObjectStore/S3ObjectTrait.php b/lib/private/Files/ObjectStore/S3ObjectTrait.php
index 9c5cf9ccc6c..defeda4c21a 100644
--- a/lib/private/Files/ObjectStore/S3ObjectTrait.php
+++ b/lib/private/Files/ObjectStore/S3ObjectTrait.php
@@ -75,51 +75,10 @@ trait S3ObjectTrait {
* @since 7.0.0
*/
function writeObject($urn, $stream) {
- $stat = fstat($stream);
-
- if ($stat['size'] && $stat['size'] < S3_UPLOAD_PART_SIZE) {
- $this->singlePartUpload($urn, $stream);
- } else {
- $this->multiPartUpload($urn, $stream);
- }
-
- }
-
- protected function singlePartUpload($urn, $stream) {
- $this->getConnection()->putObject([
- 'Bucket' => $this->bucket,
- 'Key' => $urn,
- 'Body' => $stream
- ]);
- }
-
- protected function multiPartUpload($urn, $stream) {
- $uploader = new MultipartUploader($this->getConnection(), $stream, [
- 'bucket' => $this->bucket,
- 'key' => $urn,
+ $this->getConnection()->upload($this->bucket, $urn, $stream, 'private', [
+ 'mup_threshold' => S3_UPLOAD_PART_SIZE,
'part_size' => S3_UPLOAD_PART_SIZE
]);
-
- $tries = 0;
-
- do {
- try {
- $result = $uploader->upload();
- } catch (MultipartUploadException $e) {
- \OC::$server->getLogger()->logException($e);
- rewind($stream);
- $tries++;
-
- if ($tries < 5) {
- $uploader = new MultipartUploader($this->getConnection(), $stream, [
- 'state' => $e->getState()
- ]);
- } else {
- $this->getConnection()->abortMultipartUpload($e->getState()->getId());
- throw $e;
- }
- }
- } while (!isset($result) && $tries < 5);
}
/**
ghlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
OC.L10N.register(
    "files",
    {
    "File could not be found" : "No fue posible encontrar el archivo",
    "Move or copy" : "Mover o copiar",
    "Download" : "Descargar",
    "Delete" : "Borrar",
    "Tags" : "Etiquetas",
    "Home" : "Inicio",
    "Close" : "Cerrar",
    "Could not create folder \"{dir}\"" : "No fue posible crear la carpeta \"{dir}\"",
    "Upload cancelled." : "Carga cancelada.",
    "…" : "...",
    "Unable to upload {filename} as it is a directory or has 0 bytes" : "No fue posible cargar {filename} ya que es una carpeta o tiene un tamaño de 0 bytes",
    "Not enough free space, you are uploading {size1} but only {size2} is left" : "No tienes suficiente espacio disponible, Estás cargando {size1} pero sólo cuentas con {size2} disponible",
    "Target folder \"{dir}\" does not exist any more" : "La carpeta destino \"{dir}\" ya no existe",
    "Not enough free space" : "No cuentas con suficiente espacio libre",
    "Uploading …" : "Cargando...",
    "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})",
    "Target folder does not exist any more" : "La carpeta destino ya no existe",
    "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}",
    "Actions" : "Acciones",
    "Rename" : "Renombrar",
    "Move" : "Mover",
    "Copy" : "Copiar",
    "Delete file" : "Borrar archivo",
    "Delete folder" : "Borrar carpeta",
    "Disconnect storage" : "Desconectar almacenamiento",
    "Could not load info for file \"{file}\"" : "No fue posible cargar información para el archivo \"{file}\"",
    "Files" : "Archivos",
    "Details" : "Detalles",
    "Pending" : "Pendiente",
    "Unable to determine date" : "No fue posible determinar la fecha",
    "This operation is forbidden" : "Esta operación está prohibida",
    "This directory is unavailable, please check the logs or contact the administrator" : "Esta carpeta no está disponible, por favor verfica las bitácoras o contacta al administrador",
    "Storage is temporarily not available" : "El almacenamiento no está disponible temporalmente ",
    "Could not move \"{file}\", target exists" : "No fue posible mover \"{file}\", el destino ya existe",
    "Could not move \"{file}\"" : "No fue posible mover \"{file}\"",
    "Could not copy \"{file}\", target exists" : "No se pudo copiar \"{file}\", el destino ya existe",
    "Could not copy \"{file}\"" : "No se pudo copiar \"{file}\"",
    "Copied {origin} inside {destination}" : "{origin} fue copiado dentro de {destination}",
    "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} y otros {nbfiles} archivos fueron copiados dentro de {destination}",
    "{newName} already exists" : "{newName} ya existe",
    "Could not rename \"{fileName}\", it does not exist any more" : "No fue posible renombrar \"{fileName}\", ya no existe",
    "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "El nombre \"{targetName}\" ya está en uso en la carpeta \"{dir}\". Por favor elege un nombre diferete. ",
    "Could not rename \"{fileName}\"" : "No fue posible renombrar \"{fileName}\"",
    "Could not create file \"{file}\"" : "No fue posible crear el archivo \"{file}\"",
    "Could not create file \"{file}\" because it already exists" : "No fue posible crear el archivo\"{file}\" porque ya existe",
    "Could not create folder \"{dir}\" because it already exists" : "No fue posible crear la carpeta \"{dir}\" porque ya existe",
    "Error deleting file \"{fileName}\"." : "Se presentó un error al borrar el archivo \"{fileName}\".",
    "No search results in other folders for {tag}{filter}{endtag}" : "No se encontraron resultados en otras carpetas para  {tag}{filter}{endtag}",
    "Name" : "Nombre",
    "Size" : "Tamaño",
    "Modified" : "Modificado",
    "_%n folder_::_%n folders_" : ["%n carpeta","%n carpetas","%n carpetas"],
    "_%n file_::_%n files_" : ["%n archivo","%n archivos","%n archivos"],
    "{dirs} and {files}" : "{dirs} y {files}",
    "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"],
    "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"],
    "New" : "Nuevo",
    "{used} of {quota} used" : "{used} de {quota} usados",
    "{used} used" : "{used} usados",
    "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ",
    "File name cannot be empty." : "El nombre de archivo no puede estar vacío.",
    "\"/\" is not allowed inside a file name." : "No se permite el uso del caracter \"/\" en el nombre del archivo.",
    "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido",
    "View in folder" : "Ver en la carpeta",
    "Path" : "Ruta",
    "_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"],
    "Favorited" : "Marcado como favorito",
    "Favorite" : "Favorito",
    "Copy direct link (only works for users who have access to this file/folder)" : "Copiar liga directa (sólo funciona para usuarios que tienen acceso a este archivo/carpeta)",
    "New folder" : "Carpeta nueva",
    "Create new folder" : "Crear nueva carpeta",
    "Upload file" : "Cargar archivo",
    "Recent" : "Reciente",
    "Not favorited" : "No es un favorito",
    "Remove from favorites" : "Eliminar de favoritos",
    "Add to favorites" : "Agregar a favoritos",
    "An error occurred while trying to update the tags" : "Se presentó un error al intentar actualizar la etiqueta",
    "Added to favorites" : "Agregado a los favoritos",
    "Removed from favorites" : "Eliminado de los favoritos",
    "You added {file} to your favorites" : "Agregaste {file} a tus favoritos",
    "You removed {file} from your favorites" : "Eliminaste {file} de tus favoritos",
    "Favorites" : "Favoritos",
    "File changes" : "Cambios al archivo",
    "Created by {user}" : "Creado por {user}",
    "Changed by {user}" : "Cambiado por {user}",
    "Deleted by {user}" : "Borrado por {user}",
    "Restored by {user}" : "Restaurado por {user}",
    "Renamed by {user}" : "Renombrado por {user}",
    "Moved by {user}" : "Movido por {user}",
    "\"remote user\"" : "\"usuario remoto\"",
    "You created {file}" : "Creaste {file}",
    "You created an encrypted file in {file}" : "Creaste un archivo encriptado en {file}",
    "{user} created {file}" : "{user} creó {file}",
    "{user} created an encrypted file in {file}" : "{user} creó un archivo encriptado en {file}",
    "{file} was created in a public folder" : "{file} fue creado en una carpeta pública",
    "You changed {file}" : "Cambiaste {file}",
    "You changed an encrypted file in {file}" : "Cambiaste un archivo encriptado en {file}",
    "{user} changed {file}" : "{user} cambió {file}",
    "{user} changed an encrypted file in {file}" : "{user} cambió un archivo encriptado en {file}",
    "You deleted {file}" : "Borraste {file}",
    "You deleted an encrypted file in {file}" : "Borraste un archivo encriptado en {file}",
    "{user} deleted {file}" : "{user} borró {file}",
    "{user} deleted an encrypted file in {file}" : "{user} borró un archivo encriptado en {file}",
    "You restored {file}" : "Restauraste {file}",
    "{user} restored {file}" : "{user} restauró {file}",
    "You renamed {oldfile} to {newfile}" : "Renombraste {oldfile} como {newfile}",
    "{user} renamed {oldfile} to {newfile}" : "{user} renombró {oldfile} como {newfile}",
    "You moved {oldfile} to {newfile}" : "Moviste {oldfile} a {newfile}",
    "{user} moved {oldfile} to {newfile}" : "{user} movió {oldfile} a {newfile}",
    "A file has been added to or removed from your <strong>favorites</strong>" : "Un archivo ha sido agregado o eliminado de tus <strong>favoritos</strong>",
    "Upload (max. %s)" : "Cargar (max. %s)",
    "Accept" : "Aceptar",
    "in %s" : "en %s",
    "Folder name" : "Nombre de la carpeta",
    "Name cannot be empty" : "El nombre no puede estar en blanco",
    "Select all" : "Seleccionar todo",
    "File not found" : "Archivo no encontrado",
    "Change" : "Cambiar",
    "Unknown error" : "Se presentó un error desconocido",
    "No files in here" : "No hay archivos aquí",
    "Upload some content or sync with your devices!" : "¡Carga algún contenido o sincroniza con tus dispositivos!",
    "Go back" : "Regresar",
    "Shared by link" : "Compartido por liga",
    "Shared" : "Compartido",
    "Show hidden files" : "Mostrar archivos ocultos",
    "Additional settings" : "Configuraciones adicionales",
    "WebDAV" : "WebDAV",
    "Copy to clipboard" : "Copiar al portapapeles",
    "Create" : "Crear",
    "Delete permanently" : "Borrar permanentemente",
    "No favorites yet" : "Aún no hay favoritos",
    "Files and folders you mark as favorite will show up here" : "Los archivos y carpetas que marques como favoritos se mostrarán aquí. ",
    "All files" : "Todos los archivos",
    "No entries found in this folder" : "No se encontraron elementos en esta carpeta",
    "Upload too large" : "La carga es demasido grande",
    "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los archivos que estás intentando cargar sobrepasan el tamaño máximo permitido para la carga de archivos en este servidor.",
    "Text file" : "Archivo de texto",
    "New text file.txt" : "Nuevo ArchivoDeTexto.txt",
    "Storage invalid" : "El almacenamiento es inválido",
    "Unlimited" : "Ilimitado",
    "Cancel" : "Cancelar",
    "%s used" : "%s usado",
    "%1$s of %2$s used" : "%1$s de %2$s usados",
    "Deleted files" : "Papelera",
    "Shares" : "Elementos compartidos",
    "Shared with others" : "Compartido con otros",
    "Shared with you" : "Compartido con usted",
    "Choose" : "Seleccionar"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");