website de prueba: www.abfantasy.idv.tw
Código PHP :
<html> <title>Uploader webdav</title> <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>"> <input type="text" size="50" name="url" /> <input name="archivo" type="text" /> <input type="submit" name="enviar" value="enviar"> </form> <p></p> <?php $url=isset($_POST['url'])? $_POST['url']: false; $archivo=isset($_FILES['archivo'])? $_FILES['archivo']: false; if ($url){ $tamanio=filesize($archivo); //obtenemos el tamanio del archivo $pagina=curl_init($url); curl_setopt($pagina,CURLOPT_HTTPHEADER,Array("PUT /$archivo HTTP/1.1\r\n")); curl_setopt($pagina,CURLOPT_HTTPHEADER,Array("Host:".$url."\r\n")); curl_setopt($pagina,CURLOPT_HTTPHEADER,Array("Destination:$url$archivo\n\n")); curl_setopt($pagina,CURLOPT_HTTPHEADER,Array("Content-Length: ".$tamanio."\r\n\r\n")); curl_setopt($pagina, CURLOPT_HTTPHEADER,Array('Content-Type: text/xml; charset="utf-8"'."\r\n")); curl_setopt($pagina,CURLOPT_HTTPHEADER,Array("Connection:close\r\n")); curl_setopt($pagina, CURLOPT_HEADER, 1); curl_setopt($pagina, CURLOPT_PUT, TRUE); //activamos put curl_setopt($pagina, CURLOPT_INFILESIZE,$tamanio); curl_setopt($pagina,CURLOPT_UPLOAD,TRUE); $resultado=curl_exec($pagina); curl_close($pagina); } else { echo "Rellena los campos"; } ?>
ese anterio usa curl ahora con sockets
Código PHP :
<form name="formu" method="post" action="" enctype="multipart/form-data"> La url<input type="text" name="url"><br> el path<input type="text" name="path"><br> el archivo<input type="text" name="archivo"><br> <input type="submit" name="enviar" value="enviar"> </form> <?php if(isset($_POST['url'])){ $host=$_POST['url']; $archivo=$_FILES['archivo']; $path=$_POST['path']; $ock=fsockopen($host, 80,$errno, $errstr); $sock.="PUT $path$archivo HTTP/1.1\r\n"; $sock.="Host: $url\r\n"; $sock.='Content-Type: text/xml; charset="utf-8"'."\r\n"; $sock.="Connection:close\r\n"; $sock.="Content-Length: ".filesize($archivo)."\r\n\r\n"; fputs($ock,$sock); echo $sock; fclose($ock); } ?>
espero su ayuda y gracias