webForumDet fria alternativet

Ladda upp innehållet ifrån en listbox

.NET

14 svar · 813 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Hur kan jag få till det så att, om jag markera en post i en listbox(filnamn) och
sedan klicka på en knapp så kommer en dialogruta upp och frågar om jag vill
spara filen.
Jag har den fysiska pathen men sen...

Medlem sedan mars 20011 880 inlägg
#2

Jag har kommit så långt att är det t ex -doc så får jag upp "vill du....osv" men är det
txt så öppnar explorer upp en ny sida, jag ville ha fram dialogrutan igen.
Jag vet att det har någonting med headern att göra men vad...

Medlem sedan dec. 19996 721 inlägg
#3
Response.ContentType="application/octet-stream";//Vill du vara mer specifik så får du..
Response.AddHeader("Content-Disposition",string.Format("attachment;filename={0}",Path.GetFileName(path)));
Response.TransmitFile(path);
Medlem sedan mars 20011 880 inlägg
#4

Skall denna liga i Page_Load/if(isPostBack)???

Medlem sedan dec. 19996 721 inlägg
#5

saw skrev:

Skall denna liga i Page_Load/if(isPostBack)???

Den bör ligga i eventhandlern för knappen. Lägg till en liten Response.End() på slutet också.

Medlem sedan mars 20011 880 inlägg
#6

Då har jag kanske gjort bort mig. När jag klickar på listboxen så har jag låtit värdet plus
pathen gå till en Hyperlink, och där finns ingen click_events. Den händelsen licger i
Listboxens OnChange kan jag inte använda den?

Medlem sedan dec. 19996 721 inlägg
#7

Lägg koden där du vill att filen ska skickas. Någon hyperlink behöver du inte.

Medlem sedan mars 20011 880 inlägg
#8

Då gör jag väll i vanlig ordning galet här.

 protected void ButtonFile_Click(object sender, EventArgs e)
        {
        Response.ContentType = "application/octet-stream";
        string list2 = ListBox2.Text;
        string savePublicPath = ResolveUrl("http://" + Request.ServerVariables
["SERVER_NAME"] + Request.ApplicationPath + @"/" 
+ "Admin/Dokument/Allmäna_Dokument/" + list2);
        Response.Write("<a href= /" + savePublicPath +"/target='_new' >" + list2 +"</a>");
        Response.End();
        }

Då blir det så här, när jag klickar på knappen så "försvinner" det mesta ifrån skärmen och en länk skrivs ut (som inte fungerar).
Jag måste göra en dundertabbe här...

Jag fortsätter att expremintera, nu i ListBox1_OnChange

//savePublicPath är samma som innan
Response.Write("<a href= /" + savePublicPath + "/target='_new' >" + ListBox2.Text + "</a>");
//i adressfönstret blir denna adress
[url]http://localhost:2851/http://localhost/Omarbetad[/url]
Medlem sedan mars 20011 880 inlägg
#9

Efter en god natts sömn så...

string list2 = ListBox2.Text;
        string savePublicPath = ResolveUrl("http://" + Request.ServerVariables
["SERVER_NAME"] + Request.ApplicationPath + @"/" 
+ "Admin/Dokument/Allmäna_Dokument/");
        string path = savePublicPath + list2;
Response.AddHeader("Content-Disposition", string.Format
("attachment;filename={0}", Path.GetFileName(path)));
        Response.TransmitFile(path);
        Response.End();
//ERROR
[url]http://localhost/Omarbetad[/url] Mansjouren/Admin/Dokument/Allmäna_Dokument/koder.txt 
är inte en giltig virtuell sökväg.

..jag skall tydligen inte klara ut detta...

Medlem sedan feb. 2005280 inlägg
#10

Finns det "koder.txt" i din www mapp /Omarbetad Mansjouren/Admin/Dokument/Allmäna_Dokument/ ?
Sökvägen korrekt?

Medlem sedan mars 20011 880 inlägg
#11

Jo det gör den.
Om jag skriver ut den med response.write

[url]http://localhost/Omarbetad[/url] Mansjouren/Admin/Dokument/Allmäna_Dokument/koder.txt 
//den fysiska vägen
C:\Inetpub\wwwroot\Omarbetad Mansjouren\Admin\Dokument\Allmäna_Dokument\koder.txt
Medlem sedan dec. 19996 721 inlägg
#12

Använd Server.MapPath i stället för att joxa runt med ResolveUrl etc.

Medlem sedan mars 20011 880 inlägg
#13

Nu får jag nog ge mig, trots att jag gjorde som du sa, så blir det samma fel.

 string path ="http://" + Request.ServerVariables["SERVER_NAME"] + 
Request.ApplicationPath + @"/" + "Admin/Dokument/Allmäna_Dokument/" +list2;
        Response.Write(Server.MapPath(path));
Medlem sedan jan. 20022 440 inlägg
#14

han menade mer som

string path = Server.MapPath("Admin/Dokument/Allmäna_Dokument/" +list2);
Response.Write(path);
Medlem sedan mars 20011 880 inlägg
#15

Bara för att visa så lägger jag in den fungerande koden hör.
Den ligger under button_click.

string path ="";
string list = "";
list = ListBox1.Text;
               path = Server.MapPath("Dokument/" + Session["Name"].ToString()
 + "s_Dokument" + "/" + list);
 Response.Clear();
           Response.AppendHeader("content-disposition", "attachment; filename= " + list + "");
           Response.ContentType = "text/plain";
           Response.WriteFile(path);
           Response.Flush();
           Response.End();

Tack alla för god hjälp.

262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)