Avatar billede noobsaibot Nybegynder
13. april 2006 - 17:23 Der er 17 kommentarer og
1 løsning

DownloadFile() metoden

Hejsa,
Jeg har lavet en upload fukntion og vil dernæst lave en download funktion. Jeg har skrevet følgende (har bare en webform med en knap på .. - bruger VS 2003):

        private void btnDownLoad_Click(object sender, System.EventArgs e)
        {
            WebClient Client = new WebClient ();
            Client.DownloadFile("http://www.csharpfriends.com/Members/index.aspx", "C:\\Documents and Settings\\User\\Desktop\\TEST");
        }

-----------------------------------------
Problemet er at jeg får følgende fejl:
-----------------------------------------

Server Error in '/downloadProjekt' Application.

Access to the path "C:\Documents and Settings\User\Desktop\TEST" is denied.

-----------------------------------------

Hvordan kan jeg løse dette problem?
Avatar billede dr_chaos Nybegynder
13. april 2006 - 17:26 #1
brugeren aspnet skal have skrive rettigheder til test mappen.
Avatar billede noobsaibot Nybegynder
13. april 2006 - 17:29 #2
Hm.. så kan man altid kun downloade til ét bestemt sted?

Jeg mener, hvad nu når jeg smider min app på mit webhotel og sidder ved en computer et sted, som ikke har et dir der hedder "test" ?
Avatar billede noobsaibot Nybegynder
13. april 2006 - 17:32 #3
Er der en smartere / lettere måde?
Avatar billede dr_chaos Nybegynder
13. april 2006 - 17:55 #4
altså
WebClient Client = new WebClient ();
            Client.DownloadFile("http://www.csharpfriends.com/Members/index.aspx", "C:\\Documents and Settings\\User\\Desktop\\TEST");
forsøger at hente http://www.csharpfriends.com/Members/index.aspx og ligge den i test mappen på den maskine hvor webform ligger
Hvad er formålet med download knappen ?
Avatar billede dr_chaos Nybegynder
13. april 2006 - 17:56 #5
at den bruger som trykker på knappen skal downloade en fil til sin egen maskine ?
Avatar billede noobsaibot Nybegynder
13. april 2006 - 18:00 #6
ja præcist .. tog bare lige et hardcodet eksempel .. senere kan jeg bare skifte den ønskede fil og ønskede sti .. Tror dog det kræver Impersonation, at løse det på min måde, hvilket ser ret svært ud ..

Der må da være en lettere løsning ..
Avatar billede dr_chaos Nybegynder
13. april 2006 - 18:01 #7
du kan ikke fra server side få lov til at bestemme hvor en fil skal ligge på en clients maskine.
Avatar billede dr_chaos Nybegynder
13. april 2006 - 18:02 #8
prøv at beskrive hvad præcist du gerne vil have.
Avatar billede noobsaibot Nybegynder
13. april 2006 - 18:07 #9
Jeg vil sådan set bare gerne have et webinterface der kan hente filer ned fra mit webhotel
Avatar billede dr_chaos Nybegynder
13. april 2006 - 18:12 #10
altså som ligger på din egen maskine ?
Avatar billede dr_chaos Nybegynder
13. april 2006 - 18:14 #11
eller bare en side du kan kalde med et filnavn og en mappe og så downloade filen ?
Avatar billede noobsaibot Nybegynder
13. april 2006 - 18:14 #12
Web-applikationen ligger pt på min com, men vil gerne have den skal ligge på mit webhotel ..
Når jeg nu kan uploade filer til mit webhotel ville jeg gerne kunne downloade filer (uden ftp)
Avatar billede noobsaibot Nybegynder
13. april 2006 - 18:15 #13
Jeg vil kunne indtaste et filnavn (fra mit webhotel) og en sti (på min com) og så hente filen ned ..
Avatar billede dr_chaos Nybegynder
13. april 2006 - 18:19 #14
ah. nu fattede jeg det:

lav f.eks. en aspx side med denne page_load
    protected void Page_Load(object sender, EventArgs e)
    {
        string FileName = Request.Querystring("FileName");
        FileStream MyFileStream = new FileStream(FileName, FileMode.Open);
        long FileSize;
        FileSize = MyFileStream.Length;
        byte[] Buffer = new byte[(int)FileSize];
        MyFileStream.Read(Buffer, 0, (int)MyFileStream.Length);
        MyFileStream.Close();

        Response.Clear();
        Response.ContentType = "application/octet-stream"
  Response.AddHeader("Content-disposition", _
              "attachment; filename=" + strFileName);
        Response.AddHeader("content-length", System.Convert.ToString(Buffer.Length));
        Response.BinaryWrite(Buffer);
        Response.Flush();
        Response.End();
       

    }
Avatar billede noobsaibot Nybegynder
13. april 2006 - 18:33 #15
Hehe.. okay. Får lige et par fejl:
------------------------------------------------------------------
System.Web.HttpRequest' does not contain a definition for 'Request'
The name 'strFileName' does not exist in the class or namespace
Avatar billede dr_chaos Nybegynder
13. april 2006 - 18:57 #16
protected void Page_Load(object sender, EventArgs e)
    {
        string FileName = Request.QueryString["FileName"];
        FileStream MyFileStream = new FileStream(FileName, FileMode.Open);
        long FileSize;
        FileSize = MyFileStream.Length;
        byte[] Buffer = new byte[(int)FileSize];
        MyFileStream.Read(Buffer, 0, (int)MyFileStream.Length);
        MyFileStream.Close();

        Response.Clear();
        Response.ContentType = "application/octet-stream"
  Response.AddHeader("Content-disposition", _
              "attachment; filename=" + FileName);
        Response.AddHeader("content-length", System.Convert.ToString(Buffer.Length));
        Response.BinaryWrite(Buffer);
        Response.Flush();
        Response.End();
     

    }
Avatar billede noobsaibot Nybegynder
13. april 2006 - 23:23 #17
Okay - tak. Smid bare et svar. Jeg kigger på det senere.
Avatar billede dr_chaos Nybegynder
14. april 2006 - 08:01 #18
svar :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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