Cargar un archivo en mi servidor Owncloud con PHP
curl upload (1)
Estaba teniendo un problema con una carga en owncloud también. Tenía los mismos síntomas, el curl de la línea de comandos funciona, pero no la llamada curl de PHP.
Gracias a su publicación pude hacerlo funcionar. Esto es lo que funciona para mí
// upload backup
$file_path_str = ''/tmp/'' . date(''Ymd'') . ''.tar.gz'';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ''http://server/remote.php/webdav/backups/'' . basename($file_path_str));
curl_setopt($ch, CURLOPT_USERPWD, "user:pass");
curl_setopt($ch, CURLOPT_PUT, 1);
$fh_res = fopen($file_path_str, ''r'');
curl_setopt($ch, CURLOPT_INFILE, $fh_res);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file_path_str));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE); // --data-binary
$curl_response_res = curl_exec ($ch);
fclose($fh_res);
Las diferencias son:
- CURLOPT_PUT en lugar de CURLOPT_CUSTOMREQUEST
- CURLOPT_INFILE y CURLOPT_INFILESIZE en lugar de CURLOPT_POSTFIELDS
Gracias por tu ayuda. //
Recientemente, creé mi servidor owncloud y necesito poder cargar un archivo desde un formulario php que transfiera un archivo de mi pc a mi servidor owncloud. Así que traté de usar Curl, así:
<?php
$url = "5.25.9.14/remote.php/webdav/plus.png";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // -X PUT
curl_setopt($ch, CURLOPT_USERPWD, "root:root"); // --user
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE); // --data-binary
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
''img/plus.png'' => ''@''.realpath(''img/plus.png'')
)
);
$output = curl_exec($ch);
curl_close($ch);
?>
He sido inspirado por esta publicación y este comando:
curl -X PUT "http://server.com/owncloud/remote.php/webdav/file.zip" --data-binary @"/Users/Root/Downloads/file.zip"
La línea de comando, él está trabajando pero no mi php. Logré subir el archivo pero el archivo está dañado y no sé por qué: /. Tal vez extraño el tipo MIME? ¿Es suficiente obtener un archivo dañado?
¿Ves dónde estoy equivocado? Un cordial saludo, Zed13
Editar: Cuando hago un archivo de mi archivo cargado, es de tipo datos y no png, extraño ...