Avatar billede -xyz- Nybegynder
20. maj 2005 - 20:42 Der er 10 kommentarer og
1 løsning

Poste variabler og billede til php script.

Er der en måde hvorpå man kan gøre ovenstående fra en c# applikation?

Situationen er at jeg skal opdatere en database med billeder og info, til det har jeg allerede et php script der styrer det, og så tænkte jeg at om der ikke var en måde at poste værdierne videre, så jeg slap for at connecte til db og lave en ftp conn.

Kenneth
Avatar billede claus_joergensen Nybegynder
20. maj 2005 - 20:47 #1
Avatar billede arne_v Ekspert
20. maj 2005 - 20:52 #2
simpelt eksempel på POST:

using System;
using System.IO;
using System.Net;

class MainClass
{
    public static void Main(string[] args)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://arne/htbin/tell2");
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        StreamWriter post = new StreamWriter(req.GetRequestStream());
        post.Write("field1=value1&field2=value2");
        post.Close();
        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        Stream stm = resp.GetResponseStream();
        int c;
        string res = "";
        while((c = stm.ReadByte()) >= 0) {
            res += (char)c;
        }
        stm.Close();
        resp.Close();
        Console.WriteLine(res);
    }
}
Avatar billede arne_v Ekspert
20. maj 2005 - 20:54 #3
det er en console app men koden i main kan godt køres fra en ASP.NET side

response kan læses lidt mere effektivt med en StreamReader of ReadLine/ReadToEnd end
med ReadByte men ...
Avatar billede -xyz- Nybegynder
20. maj 2005 - 21:04 #4
Jeg glemte at sige at det skulle køres fra en windows.forms app..
Avatar billede -xyz- Nybegynder
20. maj 2005 - 21:06 #5
Glemte vidst også at sige at billedet samtidigt skulle uploades til mit php script
Avatar billede arne_v Ekspert
20. maj 2005 - 21:07 #6
koden er lige god uanset om det er console, windows eller ASP.NET

file upload kræver lige lidt ekstra
Avatar billede arne_v Ekspert
20. maj 2005 - 21:09 #7
jeg lavede engang det her eksempel til upload af 2 filer:

using System;
using System.IO;
using System.Net;

public class FileUpload
{
    private const string BOUNDARY = "ArneArne";
    public static void Main(string[] args)
    {
        //upload("http://localhost/upload2.php", "C:\\z.c", "C:\\z.exe");
        upload("http://localhost/upload.php", "C:\\z.c", "C:\\z.exe");
    }
    public static void upload(string url, string textfile, string binfile)
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "POST";
        req.ContentType = "multipart/form-data, boundary=" + BOUNDARY;
        StreamWriter post = new StreamWriter(req.GetRequestStream());
        post.WriteLine("--" + BOUNDARY);
        //post.WriteLine("Content-disposition: attachment; name=\"filename[1]\"; filename=\"" + textfile + "\"");
        post.WriteLine("Content-disposition: attachment; name=\"textfile\"; filename=\"" + textfile + "\"");
        post.WriteLine("Content-type: text/plain");
        post.WriteLine("");
        StreamReader txtf = new StreamReader(new FileStream(textfile, FileMode.Open));
        string line;
        while((line = txtf.ReadLine()) != null)
        {
            post.WriteLine(line);
        }
        txtf.Close();
        post.WriteLine("--" + BOUNDARY);
        //post.WriteLine("Content-disposition: attachment; name=\"filename[2]\"; filename=\"" + binfile + "\"");
        post.WriteLine("Content-disposition: attachment; name=\"binfile\"; filename=\"" + binfile + "\"");
        post.WriteLine("Content-type: application/octet-stream");
        post.WriteLine("Content-Transfer-Encoding: binary");
        post.WriteLine("");
        post.Flush();
        Stream binf = new FileStream(binfile, FileMode.Open);
        int c;
        while((c = binf.ReadByte()) >= 0) {
            post.BaseStream.WriteByte((byte)c);
        }
        binf.Close();
        post.BaseStream.Flush();
        post.Close();
        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        Console.WriteLine(resp.StatusCode);
        resp.Close();
    }
}
Avatar billede arne_v Ekspert
20. maj 2005 - 21:10 #8
hvis den ser lidt giftig ud så prøv og kig på WebClient klassen og metoderne
UploadValues og UploadFile
Avatar billede -xyz- Nybegynder
20. maj 2005 - 21:12 #9
Jæs, lige hvad jeg ledte efter... Bare et spm. hvad gør boundary?
bare lav et svar for point hvis/ når du svarer..
Avatar billede arne_v Ekspert
20. maj 2005 - 21:14 #10
boundary er nødvendig når man har 2 filer til at adskille dem
Avatar billede arne_v Ekspert
20. maj 2005 - 21:14 #11
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester