Frågan 9 apr. 2007 13:19 #1 Hejsan!
Någon som vet hur man göra en "vill du spara ruta" i asp.net C#?
Du har säkert stött på en sån på webben, du klickar på en länk till en fil och du får upp rutan vill du spara den här filen och sen får du välja vart...
Brukar se dem, så länge det gäller filer som ej kan exekveras och öppnas i webbläsaren direkt.
Vad gäller det för typ av filer som du vill att användaren skall stöta på denna ruta? För själv ser jag dem när jag klickar på länkar med ex. exe, zip, gz, doc som filer.. vet ej hur man kan tvinga fram en sådan ruta..
C colione Medlem sedan juni 2001 4 421 inlägg Du skickar med detta i huvudet:
Content-disposition: attachment; filename=namn.ext
kod:
Response.AddHeader("content-disposition", "attachment;filename=namn.ext");
colione skrev:
Du skickar med detta i huvudet:
Content-disposition: attachment; filename=namn.ext
kod:
Response.AddHeader("content-disposition", "attachment;filename=namn.ext");
Tack så mycket, nu får jag upp rutan men vart sätter jag sökvägen till filen och hur ändrar jag filnamnet?
Skulle bli glad om du kunde hjälpa mig med detta
Adressen till filen är:
Server.MapPath("~/gamefile/" + GridView1.SelectedRow.Cells[2].Text)
Namnet på filen är :
GridView1.SelectedRow.Cells[2].Text)
la jag bara till filnamnet så här så skrev han bara ut texten gridview.. bla bla
Content-disposition: attachment; filename=GridView1.SelectedRow.Cells[2].Text
Response.AddHeader("content-disposition", "attachment;filename=" + Server.MapPath("~/gamefile/" + GridView1.SelectedRow.Cells[2].Text));
Kanske!?
tyvärr inte :/
jag får bara upp början på sökvägen då och ingen fil att spara heller
C colione Medlem sedan juni 2001 4 421 inlägg Du måste ju läsa av filen och spotta ut den till läsaren också.. :) därför får du ingen fil att spara...du ändrar filnamnet genom att ändra i filename=
Själva läsningen av filen får du nog lösa med en streamreader
Här har du en färdig lösning att titta på (använder dock ytterligare en komponent för att fippla med mail, men den delen kan du ignorera):
http://www.aspnetmime.com/tutorials/Sample_AttachmentToBrowser.aspx
Pace Medlem sedan juni 2001 9 024 inlägg Du skriver det filnamn du vill att filen ska sparas som i sidhuvudet (Response.AddHeader). Det behöver inte vara samma som originalfilen.
För att skriva filen till webbläsaren (klienten) använder du HttpResponse.WriteFile .
r) colione hann före.
hmm, får det inte riktigt att fungera...
//variabler
string file = Server.MapPath("~/gamefile/" + GridView1.SelectedRow.Cells[2].Text);
Response.AddHeader("content-disposition", "attachment;filename=namn.ext");
HttpResponse.WriteFile(file);
Någon som kan visa hur det ska vara... jag vill få den att fråga sen vill jag ha att han ska ladda ned rätt fil.
Pace Medlem sedan juni 2001 9 024 inlägg Vad är det som inte fungerar?
(Bör för övrigt vara Response.WriteFile eftersom det ska vara i den aktuella HTTP-strömmen du ska skriva till.)
jag får bara upp frågan vill du spara C--Documents alltså ingen fil eller någonting.. response är det ändrat till...
C colione Medlem sedan juni 2001 4 421 inlägg Du måste ju fortfarande läsa av innehållet i filen för att spotta ut det...som du gör nu så ber du den att skriva in sökvägen i filen.
colione skrev:
Du måste ju fortfarande läsa av innehållet i filen för att spotta ut det...som du gör nu så ber du den att skriva in sökvägen i filen.
Kan inte du visa hur man gör det då?
Du har ju sökvägen till filen och allt.
C colione Medlem sedan juni 2001 4 421 inlägg Det stod ju i exemplet jag länkade till?
Men nåt sånt här, lite förkortat.
<%@ Import Namespace="System.IO"%>
StreamReader sr = new StreamReader( sökväg );
string file = sr.ReadToEnd();
sr.Close();
Response.WriteFile(file);
C colione Medlem sedan juni 2001 4 421 inlägg E emission Medlem sedan dec. 1999 6 721 inlägg Skicka in sökvägen i WriteFile och somna om.
hmm, jag får det inte att fungera.. samma fel som förut..
C colione Medlem sedan juni 2001 4 421 inlägg och hur exakt ser din kod ut?
StreamReader sr = new StreamReader(Server.MapPath("~/gamefile/" + GridView1.SelectedRow.Cells[2].Text));
string filename = sr.ReadToEnd();
sr.Close();
Response.WriteFile(filename);
//Låt användaren ladda hem filen
Response.AddHeader("content-disposition", "attachment;filename=" + Server.MapPath("~/gamefile/" + GridView1.SelectedRow.Cells[2].Text));
Pace Medlem sedan juni 2001 9 024 inlägg string filename = Server.MapPath("~/gamefile/") + GridView1.SelectedRow.Cells[2].Text;
Response.WriteFile(filename);
Response.AddHeader("content-disposition", "attachment;filename=myfile.txt");
Om det inte fungerar har du fel sökväg till filen.