Spartakus Skrevet 14. oktober 2007 Del Skrevet 14. oktober 2007 Har knota litt med å laste ned et bilde og samtidig bevare det orginale filnavnet: Eks http://www.imagebam.com/image/f4b68d55288 Denne sida viser et html dokument med et bilde. Ved inspisering av html-koden finner jeg linken til bildet, ser slik ut: http://1.imagebam.com/dl.php?ID=55288&sec=921e07bbe151455227ea5bee9241f10f Må kopiere+lime link, ellers funker det ikke (referer sjekk?) Paster du inn denne linken får du opp det orginale filnavnet (autoTraderAd.jpg). Spørsmålet er da, hvordan gjør jeg dette programatisk? Har prøvd WebClient.DownloadFile(), men da må du spesifisere filnavn selv, noe jeg vil unngå å gjøre. Her er det noen med nesten samme problemet, men de må fortsatt spesifisere filnavn selv: http://channel9.msdn.com/ShowPost.aspx?PostID=227113 Lenke til kommentar
j000rn Skrevet 14. oktober 2007 Del Skrevet 14. oktober 2007 minResponse.GetResponseHeader("content-disposition") Lenke til kommentar
Spartakus Skrevet 15. oktober 2007 Forfatter Del Skrevet 15. oktober 2007 (endret) Takker Edit: private void Get() { System.Net.ServicePointManager.Expect100Continue = false; string url = "http://1.imagebam.com/dl.php?ID=55288"; string post = "sec=921e07bbe151455227ea5bee9241f10f"; HttpWebRequest wreq = (HttpWebRequest)HttpWebRequest.Create(url); wreq.Method = "POST"; wreq.ContentType = "application/x-www-form-urlencoded" + Environment.NewLine; wreq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"; wreq.ContentLength = post.Length; try { StreamWriter sw = new StreamWriter(wreq.GetRequestStream()); sw.Write(post); sw.Close(); HttpWebResponse wres = (HttpWebResponse)wreq.GetResponse(); Stream imagestream = wres.GetResponseStream(); string filename = wres.GetResponseHeader("content-disposition").Replace("\"", "").Split("=".ToCharArray())[1]; string length = wres.Headers.GetValues("content-length")[0]; label_filename.Text = filename; label_length.Text = length + " bytes"; string path = Path.Combine(@"C:\", filename); FileStream writeStream = new FileStream(path, FileMode.Create, FileAccess.Write); ReadWriteStream(imagestream, writeStream); pictureBox_myImage.Image = Image.FromFile(path); wres.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } Endret 15. oktober 2007 av xtc Lenke til kommentar
Manfred Skrevet 15. oktober 2007 Del Skrevet 15. oktober 2007 Hvorfor kan du ikke bruke WebClient?? using (WebClient wc = new WebClient()) { HttpWebResponse wreq = wc.ResponseHeaders[ .... } ...for å få filnavnet, og så bruke wc.DownloadFile() for å laste ned filen. HttpWebResponse og HttpWebRequest er litt .net 1.1 eller compact-opplegg... Lenke til kommentar
Spartakus Skrevet 15. oktober 2007 Forfatter Del Skrevet 15. oktober 2007 Nei, si det :S Alltid åpen for mindre kode Lenke til kommentar
j000rn Skrevet 15. oktober 2007 Del Skrevet 15. oktober 2007 HttpWebResponse og HttpWebRequest er litt .net 1.1 eller compact-opplegg... Nja, det hender faktisk at man kommer oppi ting hvor WebClient ikke er bra nok..., men enig i at metoden din her var bedre. Lærte noe nytt jeg også Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå