Avatar billede mrbensen Nybegynder
28. august 2006 - 16:24 Der er 11 kommentarer og
1 løsning

Fil download og postback i samme klik

Jeg har brug for at have en linkbutton der giver et postback hvor jeg kan gemme nogle værdier i en database, samtidig med at det samme klik også giver brugeren mulighed for at downloade en fil. Kan jeg på nogen måde vedhæfte filen på Response objektet inden min Page afslutter?

Et alternativ kunne måske være at bruge JavaScript og så kalde en funktion der får download dialogen til at poppe op (hvis det er muligt) og derefter kan jeg lave en submit, så jeg kan få opdateret min database.

Er der nogen der har prøvet noget lignende og kan fortælle mig hvad der kan lade sig gøre?
Avatar billede snakeeyz Nybegynder
28. august 2006 - 17:17 #1
Prøv følgende:

Response.ContentType = "application/x-download"
            Response.AddHeader("Content-Disposition", "filename=" + ExportName)
            Response.WriteFile(Server.MapPath(ExportName))
            Response.End()
Avatar billede mrbensen Nybegynder
29. august 2006 - 09:04 #2
Det virker næsten perfekt. Det eneste problem er at det ikke ser ud til at den kan genkende min fil (.csv), selv om jeg prøver med "text/csv" eller "application/csv" eller for den sags skyld "application/Excel"...

Har du også en løsning til det?
Avatar billede snakeeyz Nybegynder
29. august 2006 - 09:10 #3
Det er også en csv. fil jeg bruger, så det burde virke.
Åbner den ikke en download box?
Avatar billede mrbensen Nybegynder
29. august 2006 - 09:28 #4
Jo, den åbner en download box, men den kan ikke genkende fil typen og den smider .csv efter filen....

hvis jeg bruger "application/x-msexcel" siger den at det er en excel fil i stedet for "unknown type", så det er jo fremskridt. Men det er bare lidt skidt at filen mister sit .csv, så kan det jo være brugeren vælger at gemme den med en anden endelse og får problemer... Selvom jeg skriver at han kan downloade en komma separeret fil :)
Avatar billede snakeeyz Nybegynder
29. august 2006 - 09:41 #5
Hvilken værdi har du givet din ExportName variabel?
Den skal hedde filnavn.csv
Avatar billede mrbensen Nybegynder
29. august 2006 - 09:44 #6
værdien af den er f.eks:
"resources\bc8fd185-12af-4b9c-a82d-cad12477ad1a\ResultOptimizerExport1.csv",

så det burde vel være godt nok?
Avatar billede mrbensen Nybegynder
29. august 2006 - 09:55 #7
Jeg har først lige prøvet at kigge på filen nu - når jeg har downloaded den, så indeholder den også html'en fra hjemmesiden som bliver smidt ind i slutningen af filen - det går jeg ikke ud fra at du oplever?
Avatar billede snakeeyz Nybegynder
29. august 2006 - 10:31 #8
Skal lige forstå det korrekt.
Har du ikke en fil på din server, som er den du vil give brugeren mulighed for at downloade?
I så fald´må der være noget galt med selve filen

Den løsning jeg har henter jeg data ud fra databasen og gemmer i en fil - herefter smider jeg filen ud til brugeren.
Avatar billede mrbensen Nybegynder
29. august 2006 - 11:00 #9
Jo, det er rigtigt - jeg har lige lavet en fil, som brugeren skal have mulighed for at downloade.

Filen er ok - og jeg kan sagtens downloade den hvis jeg bare bruger et <a href="...

men når jeg prøver at gøre som du foreslår bliver filen xKb større og der kommer en masse html i røven af den. Det giver ikke rigtig nogen mening synes jeg, idet jeg jo laver den response.end som du skriver.
Avatar billede snakeeyz Nybegynder
31. august 2006 - 06:28 #10
hmm...

Det lyder mest som om, at noget af HTML'en fra din side bliver skrevet ned i filen - og dermed en fejl i selve skrivningen af filen.
Det andet med at hente filen burde virke.

Hvordan skriver du til filen?

(Jeg har selv haft lidt probs med at der kom ekstra indhold i min fil)
Avatar billede mrbensen Nybegynder
31. august 2006 - 08:31 #11
Jeg skriver filen med en streamwriter, men den del virker fint og foregår i en backend komponent, der ikke har nogen direkte knytning til html siden (den skriver bare i en DB når den har lavet filen). Så jeg er 100% sikker på at filen er ok.

Det er i disse linier der sker et eller andet underligt:

Response.Clear();
Response.ContentType = "application/x-download";
Response.AddHeader("Content-Disposition", "filename=" + project.PathToExportedFile1.Replace(@"d:\webdata\optimizer3\website\", ""));
Response.WriteFile(Server.MapPath(Project.PathToExportedFile1.
Replace(@"d:\webdata\optimizer3\website\", "")));
Response.End();

Men jeg kan ikke lige se hvornår det html skulle blive skrevet i mit response - jeg laver jo en clear() inden jeg går i gang og en end() når jeg er færdig
Avatar billede mrbensen Nybegynder
31. august 2006 - 09:39 #12
Ok, nu skylder jeg vidst en undskyldning for at spilde din tid :(

Jeg har haft trace på hele tiden mens jeg sidder og udvikler, så det er selvfølgelig al trace html'en der kommer efter filen...

Men tak for hjælpen - der virker fint når jeg slår trace fra :/
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
Kurser inden for grundlæggende programmering

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



Seneste spørgsmål Seneste aktivitet
I dag 14:04 Pixeline cd’er til PC Af Mathilde i Windows
I dag 01:14 Windows 10 - IIS 10 Af bsn i Windows
I går 20:39 Boot fra USB Af poulmadsen i Windows
I går 11:43 Gmail-ikon på skrivebordet Win 10 Af ErikHg i Fri debat
I går 09:22 Lopslag Af Luffe i Excel