Comunidad de diseño web y desarrollo en internet online

[PHP]Uploader para Webdav

Citar            
MensajeEscrito el 19 Oct 2010 08:29 pm
Que tal amigos, Miren eh estado tratando de hacer un uploader para Webdav supongo que la mayoria lo conocen si no poes los invito a hechar una buscada por google :P,Pero eh intentado con Curl() con Sockets() y nada de nada no logro hacer ke funcion el mentado uploader la verdad que me eh leido de todo pero nada kisiera ver si me pueden hechar una mano para hacerlo funcionar les dejo mis 2 codes y 1 website de prueba.

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

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 20 Oct 2010 10:45 am
Tu formulario no tiene ningún input de tipo file.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 21 Oct 2010 03:30 am

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>

<input type="submit" name="enviar" value="enviar">
</form>
<?php


$host=$_POST['url'];
$path=$_POST['path'];


function sent($sock)   
{   
global  $host, $html;   
$ock=fsockopen(gethostbyname($host),'80');   
if (!$ock) {   
echo 'No hay respuesta '.$host; die;   
}   
fputs($ock,$sock);   
$html='';   
while (!feof($ock)) {   
$html.=fgets($ock);   
}   
fclose($ock);   
} 
   
 

    
  
 echo "Remember,keep urfile in type txt!\r\n\r\n";
     $fp = fopen("archivo.txt", 'r');
     if($fp!=false){
     while (false!==($char = fgets($fp))) {
     $fir1=$char;
     }
     fclose($fp);





$sock="PUT ".$path."archivo.txt HTTP/1.1\r\n";
    $sock.="Host: ".$host."\r\n";
    $sock.='Content-Type: text/xml; charset="utf-8"'."\r\n";
    $sock.="Connection:close\r\n";
    $sock.="Content-Length: ".strlen($fir1)."\r\n\r\n";
    $sock.="".$fir1."\r\n";
       echo $sock; sent($sock);sleep(2);
    
    $sock="MOVE ".$path."test.txt HTTP/1.1\r\n";
    $sock.="Host: ".$host."\r\n";
    $sock.="Connection:close\r\n";
    $sock.="Destination: ".$path."racle.asp\n\n";
    sent($sock);
    echo "El archivo se subio en http://".$host.$path."test.txt";
    die;}
    else{die;}

?>



poes weno logre hacer funcionar el de sockets,pero ahora me encuentro ke no puedo hacer una array para ke pueda ir leyendo varios hosts a la vez,es decir que se para en la primera y si lo pongo arriba de la funcion sent(); dice ke no peude ser redeclarado obvio pero no se me ocurre una forma de hacerlo,la verdad soy algo novato en PHP pido su ayuda.

Gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.