Página 1 de 3

[DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 15 Ago 2011 17:52
por Pabloko
Buenas, segun veo un interes creciente en esto y tenia por ahi algunos trozos de codigo de otra cosa asi que los meto en una dll.

Se trata de subir archivos a un servidor mediante formulario, sin contraseñas ni historias, simplemente hay que poner un archivo php (o cualquier otro tipo) en el server para recibir los archivos y utilizar la dll para enviarlos.

bool uploaded = UploadFile(string URL, string FILE);
Parte AMS
result = DLL.CallFunction("AutoPlay\\Docs\\WebUploadPabloko.dll", "UploadFile", "\"http://localhost:8080/up.php\",\"".._SourceFolder.."\\AutoPlay\\Docs\\imagen.png\"", DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
Parte PHP
<?
$status = "";
if ($_POST["action"] == "upload") {
// obtenemos los datos del archivo
$tamano = $_FILES["file"]['size'];
$tipo = $_FILES["file"]['type'];
$archivo = $_FILES["file"]['name'];
$prefijo = substr(md5(uniqid(rand())),0,6);

if ($archivo != "") {
// guardamos el archivo a la carpeta files
$destino = "files/".$prefijo."_".$archivo;
if (copy($_FILES['file']['tmp_name'],$destino)) {
$status = "Archivo subido: <b>".$archivo."</b>";
} else {
$status = "Error al subir el archivo";
}
} else {
$status = "Error al subir archivo";
}
}
?>


Codigo Fuente
using System;
using System.Collections.Generic;
using System.Text;
using RGiesecke.DllExport;
using System.Collections.Specialized;
using System.Net;
using System.IO;

namespace WebUploadPabloko
{
internal static class UnmanagedExports
{
[DllExport("UploadFile", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
static bool uploadfile(string url, string file)
{
NameValueCollection nvc = new NameValueCollection();
nvc.Add("action", "upload");
return HttpUploadFile(url, file, "file", MimeType(file), nvc);
}




public static bool HttpUploadFile(string url, string file, string paramName, string contentType, NameValueCollection nvc)
{
//log.Debug(string.Format("Uploading {0} to {1}", file, url));
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
bool ret;

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
wr.ContentType = "multipart/form-data; boundary=" + boundary;
wr.Method = "POST";
wr.KeepAlive = true;
wr.Credentials = System.Net.CredentialCache.DefaultCredentials;

Stream rs = wr.GetRequestStream();

string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
foreach (string key in nvc.Keys)
{
rs.Write(boundarybytes, 0, boundarybytes.Length);
string formitem = string.Format(formdataTemplate, key, nvc[key]);
byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
rs.Write(formitembytes, 0, formitembytes.Length);
}
rs.Write(boundarybytes, 0, boundarybytes.Length);

string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
string header = string.Format(headerTemplate, paramName, file, contentType);
byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
rs.Write(headerbytes, 0, headerbytes.Length);

FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[4096];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
rs.Write(buffer, 0, bytesRead);
}
fileStream.Close();

byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
rs.Write(trailer, 0, trailer.Length);
rs.Close();

WebResponse wresp = null;
try
{
wresp = wr.GetResponse();
Stream stream2 = wresp.GetResponseStream();
StreamReader reader2 = new StreamReader(stream2);
//log.Debug(string.Format("File uploaded, server response is: {0}", reader2.ReadToEnd()));
ret = true;
}
catch (Exception ex)
{
//log.Error("Error uploading file", ex);
ret = false;
if (wresp != null)
{
wresp.Close();
wresp = null;
}
}
finally
{
wr = null;
}

return ret;
}


public static string MimeType(string Filename)
{
string mime = "application/octetstream";
string ext = System.IO.Path.GetExtension(Filename).ToLower();
Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext);
if (rk != null && rk.GetValue("Content Type") != null)
mime = rk.GetValue("Content Type").ToString();
return mime;
}

}
}


Descarga: -- LINK CAÍDO --
MODERADORES: SI TIENES EL ARCHIVO, POR FAVOR CONTACTA A UN MODERADOR (ADMINISTRADOR, MIEMBRO DE STAFF O CO-STAFF) PARA MODIFICAR EL LINK DE DESCARGA

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 15 Ago 2011 17:56
por Pabloko
ni idea de porque los caracteres se ven en html pero por lo menos dejo el archivo php

Código: Seleccionar todo

<?
    $status = "";
    if ($_POST["action"] == "upload") {
        // obtenemos los datos del archivo
        $tamano = $_FILES["file"]['size'];
        $tipo = $_FILES["file"]['type'];
        $archivo = $_FILES["file"]['name'];
        $prefijo = substr(md5(uniqid(rand())),0,6);
       
        if ($archivo != "") {
            // guardamos el archivo a la carpeta files
            $destino =  "files/".$prefijo."_".$archivo;
            if (copy($_FILES['file']['tmp_name'],$destino)) {
                $status = "Archivo subido: <b>".$archivo."</b>";
            } else {
                $status = "Error al subir el archivo";
            }
        } else {
            $status = "Error al subir archivo";
        }
    }
?>

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 15 Ago 2011 20:44
por abood1987
thank you

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 15 Ago 2011 22:01
por Thedary
El Puto amo!!!

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 16 Ago 2011 08:36
por danielpz
TE AMO!!!, quisieras casarte con migo? JAJAJJAJA, DEMONIOS!! COMO DIRIAN EN TARINGA!!! ERES GROSO!!! ajjaja, desearia el iconito de idolatracion....

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 16 Ago 2011 09:41
por danielpz
demonios, no me funciona que estare aciendo mal,, algun ejemplo porfavor con el APZ?, pero q ise mal, subi el php, modifike el codigo q ba en el ams, y le puse la call funcion en el e lcik de un boton, pero no sebe nada, ni sale mensaje ni naa.. q estare asiendo mal..

Algun ejemplo en APZ?

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 16 Ago 2011 10:08
por Pabloko
tienes creada la carpeta files/ en tu server? si no es asi lo mismo el php esta retornando un error de acceso, acuerdate de crearla y dale permiso por lo menos 775 o 777 aunque creo que no es necesario.

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 16 Ago 2011 13:17
por danielpz
Pabloko escribió:tienes creada la carpeta files/ en tu server? si no es asi lo mismo el php esta retornando un error de acceso, acuerdate de crearla y dale permiso por lo menos 775 o 777 aunque creo que no es necesario.
ASI ES pabloko, cree la carpeta files, asi cheka
mi dominio es http://www.danielpz.com

Tons. lo q ise fue subir el archivo php, que le puse de nombre "archivo.php" entonces seria en el codigo:

result = DLL.CallFunction("AutoPlay\\Docs\\WebUploadPabloko.dll", "UploadFile", "\"http://danielpz.com/archivo.php\",\"".. ... imagen.png\"", DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);


es mas solo modifike eso nomas.. .

A verdad tambien el mismo php..
en ves de poner

 $destino =  "files/".$prefijo."_".$archivo;


Le puse

 $destino =  "datos/".$prefijo."_".$archivo;


y obviamente cree la carpeta datos, pero para asegurarme tambien cree la carpeta files, y a ambas le puse 777 xD, como el anticristo pero 1 mas xD,,,
entonces, que es lo q ise mal???

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 16 Ago 2011 15:23
por Pabloko
pues no es accesible, me da error 404 http://danielpz.com/archivo.php

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 16 Ago 2011 19:32
por danielpz
no pues...., era un ejemplo, lo borre por seguridad, lo cual me hace pensar,, entonces,, cualquier persona que tenga el proyecto ya compilado, solo tiene q modificar a la ruta donde esta mi php y podra subir las cosas a la misma carpeta, por ejemplo si tu tienes en www.pabloko.com/archivo.php, solo modifico para q apunte ahi, y ya se guardará????... :SOS:

PD: ahorita configuro todo para q este listo y lo pruebes..

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 16 Ago 2011 19:56
por danielpz
Wuau!! funciono, que demonios abre echo mal, q raro, xD,

Por siacaso les dejo el apz

Solo modifiken la parte que dice "http://danielpz.com/archivo.php" en On click, en el boton

http://danielpz.com/subidor/data/Subido ... abloko.apz

PD: Un dato importante, en mi primer coment en este post marke las dos opciones:

Imagen

Pero rebze mi email, y no me abisaron cuando pabloko escribio.... porfa admins cheken eso, es muy importante para estar al tanto :)

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 17 Ago 2011 19:55
por danielpz
nome responden mi pregunta :(

Ahi ba otra vez mi estimado pabloko!

Si mi pata hace el mismo apz y lo direccion asia mi www.danielpz.com/archivo.php, lo subira tambien asi, sin mi permiso?...

Como filtro solo archivos de un tipo de extension???

:SOS:

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 17 Ago 2011 20:02
por Pabloko
mi primer ban!

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 19 Ago 2011 03:58
por sSantoss
no se porq no vi esto hace tiempoXD...

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 19 Ago 2011 05:00
por DaLion
Muy buen dll Gracias por el Aporte...

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 19 Ago 2011 07:39
por dangngocnguyenit
i love u. thanks

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 19 Ago 2011 16:37
por Ceone
le echo un ojo, gracias bro.

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 14 Sep 2011 17:46
por bumbo
bravo

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 14 Sep 2011 21:15
por er_mejor
muy bueno pabloko, gracias!

Re: [DLL] WebUploadPabloko.dll - Subir archivos a servidor

Publicado: 21 Sep 2011 19:37
por jaimevega
pero esperen, la pregunta que iso Pezeta esta bien formulada,, que pasaria si alguien tiene el mismo proyecto y lo compila con le misma ruta de un php que no sea suyo, todo lo q subiria con su proyecto lo subiria al servidor de otro????