webForumDet fria alternativet

Spara ruta

.NET

24 svar · 773 visningar · startad av smileenergy

Medlem sedan jan. 200781 inlägg
Frågan#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...

Medlem sedan nov. 20014 054 inlägg
#2

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..

Medlem sedan juni 20014 421 inlägg
#3

Du skickar med detta i huvudet:

Content-disposition: attachment; filename=namn.ext

kod:

Response.AddHeader("content-disposition", "attachment;filename=namn.ext");
Medlem sedan jan. 200781 inlägg
#4

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

Medlem sedan nov. 20014 054 inlägg
#5
Response.AddHeader("content-disposition", "attachment;filename=" + Server.MapPath("~/gamefile/" + GridView1.SelectedRow.Cells[2].Text));

Kanske!?

Medlem sedan jan. 200781 inlägg
#6

tyvärr inte :/
jag får bara upp början på sökvägen då och ingen fil att spara heller

Medlem sedan juni 20014 421 inlägg
#7

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

Medlem sedan juni 20019 024 inlägg
#8

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.

Medlem sedan jan. 200781 inlägg
#9

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.

Medlem sedan juni 20019 024 inlägg
#10

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.)

Medlem sedan jan. 200781 inlägg
#11

jag får bara upp frågan vill du spara C--Documents alltså ingen fil eller någonting.. response är det ändrat till...

Medlem sedan juni 20014 421 inlägg
#12

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.

Medlem sedan jan. 200781 inlägg
#13

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.

Medlem sedan juni 20014 421 inlägg
#14

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);
Medlem sedan juni 20014 421 inlägg
#15

eller kanske ännu hellre filestream istället för streamreader:
http://msdn2.microsoft.com/en-us/library/system.io.filestream.aspx

Medlem sedan dec. 19996 721 inlägg
#16

Skicka in sökvägen i WriteFile och somna om.

Medlem sedan jan. 200781 inlägg
#17

hmm, jag får det inte att fungera.. samma fel som förut..

Medlem sedan juni 20014 421 inlägg
#18

och hur exakt ser din kod ut?

Medlem sedan jan. 200781 inlägg
#19
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));
Medlem sedan juni 20019 024 inlägg
#20
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.

259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)