Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[C#] Saven van memorystream

Pagina: 1
Acties:
  • 1.627 views

Verwijderd

Topicstarter
Morgend.

Ik heb een probleem met het saven van een bestand in samen spraak met een memorystream.

De bedoeling is dat de memorystream de files van de server haalt en deze terug streamed naar de gebruiker. De pagina die daar voor wordt gebruikt staat ook op die server. Hij begint met de download maar neemt gewoon het bestand niet mee, in plaats daarvan krijg ik gewoon de header van de pagina.

Ik heb al gezocht en gezocht maar vind het niet echt terug en ik ben een noob als het op C# aankomt daarom vraag ik het hier.

Dit is de code die ik nu heb.

Het is bij lijn 51 tot 53 dat ik nog iets moet bijzetten maar ik weet niet goed wat, heb al vanalles geprobeerd.

Dank bij voorbaat.


C#: tabwidth
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Net;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

namespace DownloadStream
{
    public partial class _Default : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {

            try
            {

                string url = string.Empty;
                if (url == null || url.Length == 0)
                {
                    url = "http://1.1.1.1/";
                }

                //Initialize the input stream        
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

                //Initialize the output stream        
                Response.Clear();
                string file = Request.QueryString["file"];
                //Response.AppendHeader("Content-Disposition:", "attachment; filename=" + file);  
                Response.AppendHeader("Content-Disposition:", "attachment; filename=voorbeeld.doc");
                Response.AppendHeader("Content-Length", resp.ContentLength.ToString());
                Response.ContentType = "application/download";

                //Populate the output stream       
                byte[] ByteBuffer = new byte[1024];
                MemoryStream ms = new MemoryStream(ByteBuffer, true);
                Stream rs = req.GetResponse().GetResponseStream();
                byte[] bytes = new byte[1024];
                while (rs.Read(ByteBuffer, 0, ByteBuffer.Length) > 0)

                {
                    Response.BinaryWrite(ms.ToArray());
                    //ms.Write(ByteBuffer, 0, ByteBuffer.Length);
                  //Response.BinaryWrite(ByteBuffer.ToString);
                    
                    Response.Flush();
                }

                //Cleanup        
                Response.End();
                ms.Close();
                ms.Dispose();
                rs.Dispose();
                ByteBuffer = null;
            }

            catch (Exception ex)
            {
                Console.WriteLine("{0} Exception caught.", e);
            }
        }

    }
}

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Application/download is geen geldig mime type, application/octet-stream wel.
Ik weet 100% zeker dat je *NIET* hebt gedebugged! 'ms' wordt namelijk nooit gevuld.

Daarbij gaat je loop ook bij de laatste iteratie fout, omdat je namelijk niet de lengte welke door Read wordt terug gegeven wordt gebruikt om het aantal te schrijven bytes aan te geven. De laatste read bevat zeer onwaarschijnlijk 1024 bytes, en ByteBuffer.Length zorgt er dan voor dat je meer bytes schrijft dan er geladen zijn. Je krijgt geen foutmelding hiervan omdat bij de interatie telkens dezelfde byte array wordt overschreven. Krijg je bij de laatste iteratie 768 bytes terug, dan blijven op het einde van de array nog 256 bytes van de vorige iteratie staan. Het gevolg, je download binary is corrupt.

Je moet dus altijd bij het Read het aantal gelezen bytes gebruiken of je moet na de response flush je byte buffer opnieuw initialiseren. Echter niet alle browsers gebruiken de Content-Length headers bij een download, dus bij sommige browsers zal het bestand worden opgevuld met een aantal null bytes op het einde. Onthoud dat je een binair bestand stuurt en dat null tekens daarom geldige karakters zijn.

If it isn't broken, fix it until it is..


Verwijderd

Topicstarter
Blijkbaar is "ms" inderdaad null, maar ik begrijp niet als ik bijvoorbeeld het document download en open dat er dit in staat.
Friday, March 21, 2008 11:53 AM <dir> App_Data
Monday, May 09, 2005 9:09 AM 446 Default.aspx
Tuesday, March 25, 2008 12:07 PM 2142 Default.aspx.cs
Friday, March 21, 2008 12:25 PM 1667 web.config
En inderdaad de contentType was behoorlijk dom, is nu aangepast.

Ik heb nu het volgende gedaan en nu krijg ik een leeg document.

C#: tabwidth
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 

                //Initialize the input stream        
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

                //Initialize the output stream        
                //Response.Clear();
             //   string file = Request.QueryString["file"];
                //Response.AppendHeader("Content-Disposition:", "attachment; filename=" + file);  
                Response.AppendHeader("Content-Disposition:", "attachment; filename=voorbeeld.doc");
                Response.AppendHeader("Content-Length", resp.ContentLength.ToString());
                Response.ContentType = "application/octet-stream";

                //Populate the output stream 
                int bytesSize = 0;
                byte[] ByteBuffer = new byte[1024];
                MemoryStream ms = new MemoryStream(ByteBuffer, true);
                Stream rs = req.GetResponse().GetResponseStream();
                //byte[] bytes = new byte[1024];
                while ((bytesSize = rs.Read(ByteBuffer, 0, ByteBuffer.Length)) > 0)

                {
                //Response.BinaryWrite(ms.ToArray());
                  ms.Write(ByteBuffer, 0, bytesSize);
                  //Response.BinaryWrite(ByteBuffer.ToString);
                    
                   Response.Flush();
                   bytesSize = 0;
                   ByteBuffer = new byte[1024];
                }

                //Cleanup        
                Response.End();
                ms.Close();
                ms.Dispose();
                rs.Dispose();
                ByteBuffer = null;
            }

            catch (Exception ex)
            {
                Console.WriteLine("{0} Exception caught.", e);
            }
        }

    }
}


Als ik terug debug gaat hij terug naar de loop dus dat is al goed maar de "ms" blijft null wat voor mij een groot raadsel blijkt. :/

  • whoami
  • Registratie: December 2000
  • Laatst online: 19-11 19:48
Zoals niemand_Anders al zegt, is het misschien handig om eerst eens zelf je code te debuggen.

Als het trouwens louter gaat om het downloaden van een bestand, kan je misschien eens naar de WebClient class kijken; als ik het goed heb, heeft die een DownloadFile method ....

https://fgheysels.github.io/


  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

In VB.net doe ik het zo (wel vanaf een bitmap b):
code:
1
2
3
4
5
            Dim ms As New System.IO.MemoryStream
            b.Save(ms, Imaging.ImageFormat.Png)
            b.Dispose()
            Response.ContentType = "image/png"
            Response.BinaryWrite(ms.ToArray)


Wat punt comma'tjes erachter en 't is C#
Aangezien je geen bitmap hebt, moet de laatste regel voldoende zijn, als er een reguliere image in js ms zit

Om te debuggen zet je je contenttype en andere headers uit zodat het gewoon getoond wordt in IE of firefox, zie je meteen wat er geschreven wordt, hou ook eens bij hoeveel bytes je al gelezen hebt en kijk of het overeenstemt

[ Voor 38% gewijzigd door ? ? op 26-03-2008 09:28 ]


Verwijderd

Topicstarter
era.zer schreef op woensdag 26 maart 2008 @ 09:23:
In VB.net doe ik het zo (wel vanaf een bitmap b):
code:
1
2
3
4
5
            Dim ms As New System.IO.MemoryStream
            b.Save(ms, Imaging.ImageFormat.Png)
            b.Dispose()
            Response.ContentType = "image/png"
            Response.BinaryWrite(ms.ToArray)


Wat punt comma'tjes erachter en 't is C#
Aangezien je geen bitmap hebt, moet de laatste regel voldoende zijn, als er een reguliere image in js ms zit

Om te debuggen zet je je contenttype en andere headers uit zodat het gewoon getoond wordt in IE of firefox, zie je meteen wat er geschreven wordt, hou ook eens bij hoeveel bytes je al gelezen hebt en kijk of het overeenstemt
ms.ToArray geeft mij dus die tekst die ik hierboven heb gezet, hetzelfde als ik de headers en contentype in commentaar zet.

Bij het debuggen leest hij slechts 562 bytes in dan gaat hij terug in de loop en dan zijn de bytes 0 dus gaat hij er terug uit. Het lijkt er precies op dat hij gewoon niet aan de files komt. :?

Zijn er nog specifieke dingen waar ik moet opletten tijdens het debuggen, ik moet zeggen ik word er een beetje gek van dat het me niet wil lukken. :|

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:41

TeeDee

CQB 241

Het lijkt er bij mij op dat je

1] Directory Browsing op die site/dir hebt staan
2] Dat als response uitgepoept wordt
3] Dat ook in je file terecht komt.

Als ik dus naar je url (http://1.1.1.1/) kijk, lijkt me dat het meest logische. Je resultaat zal anders worden als je ook daadwerkelijk voorbeeld.doc aanroept.

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
TeeDee schreef op woensdag 26 maart 2008 @ 10:11:
Het lijkt er bij mij op dat je

1] Directory Browsing op die site/dir hebt staan
2] Dat als response uitgepoept wordt
3] Dat ook in je file terecht komt.

Als ik dus naar je url (http://1.1.1.1/) kijk, lijkt me dat het meest logische. Je resultaat zal anders worden als je ook daadwerkelijk voorbeeld.doc aanroept.
Dan leest hij 1024 bytes en krijg ik "Memory stream is not expandable." als hij terug in de loop gaat.

Logisch lijkt me maar hoe los je het op, waar tel ik de buffer bij op ?

edit: Ik heb nu effe de buffersize manueel vergroot (is wel niet de bedoeling, ik weet in de toekomst niet hoe groot de files gaan zijn) en ok hij download maar dan kijk ik in het document en daar staat in "System.Byte[]System.Byte[]System.Byte" en niet de tekst van het document. :?

[ Voor 18% gewijzigd door Verwijderd op 26-03-2008 10:52 ]


  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

deleted

[ Voor 255% gewijzigd door ? ? op 26-03-2008 11:00 ]


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Dan leest hij 1024 bytes en krijg ik "Memory stream is not expandable." als hij terug in de loop gaat.
Dat komt omdat je de MemoryStream initialiseert op 1024 tekens (inhoud van ByteBuffer). Je gebruikt nu de MemoryStream om ByteBuffer te vullen. Je krijgt de gevulde byte array terug door GetBuffer() aan te roepen. Ik denk dat het verstandig is dat je nu Visual Studio sluit en eerst even flink de MSDN gaat doorlezen want dit soort fouten behoor je echt met debugging en de MSDN eruit te halen. Werk je met de Express versies van Visual Studio, dan raad ik je toch echt aan de MSDN te downloaden. Je kunt ook de online MSDN doorlezen, maar ik vind zelf de lokale MSDN gemakkelijker.

Ik wil best helpen, maar ik heb bijna het idee dat ik degene ben die de applicatie schrijft. Misschien moet je wat langer dan 20 minuten dingetjes proberen? Neem eens rustig de tijd om naar je code te kijken. Is het allemaal wel logisch wat ik doe? Kan het op een andere manier? Heb ik wel een MemoryStream nodig? etc etc.

Debuggen kan soms gemakkelijk een aantal dagen kosten. Vorige week ben ik bijna 2 dagen bezig geweest om uiteindelijk een stomme fout te vinden die waarschijnlijk slechts 1 op de 10.000 keer voorkomt.

If it isn't broken, fix it until it is..


Verwijderd

Topicstarter
Geloof me ik zit er al dagen aan bezig, heb al ontelbare dingen geprobeerd maar nog geen oplossing gevonden.

Ik heb wel een project (downloadmanager) wat perfect werkt enkel moet je daar zelf de link in een textbox ingeven en ook het path waar je de file (.jpg, .exe, etc...) wilt opslaan. Ik heb daar zelf al een hoop aan liggen aanpassen. Daar gebruiken ze een FileStream vb.

code:
1
strLocal = new FileStream(txtPath.Text, FileMode.Append, FileAccess.Write, FileShare.None);


Maar dat path moet je dus ingeven, ik wil een popup die vraagt waar je de file wilt plaatsen, dat gebeurt via.

code:
1
2
Response.AppendHeader("");
Response.ContentType = "application/octet-stream";


Maar ik heb nog geen manier gevonden om dit samen te laten werken.

Ook hebben ze mij gezegd dat ik geen FileStream nodig heb maar ik denk dus eerlijk gezegd van wel.

Ik vraag helemaal niet dat je het zelf moet schrijven voor mij, ik wel het zelf kunnen maar zoals ik al zei ken ik vrij weinig van C#. Ik vraag enkel tips en dergelijke. Bij mijn weten zit ik er niet ver naast maar ik zie gewoon niet waar het probleem ligt.

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

Code komt volledig van internet (inclusief comments):
http://www.lockergnome.co...to-user-through-server-c/

Wat heb je hier nu zelf al aangedaan, behalve gekopieerd en geplakt... En als je niet weet waar je mee bezig bent: leer het eerst.

[ Voor 20% gewijzigd door ? ? op 26-03-2008 13:34 ]


Verwijderd

Topicstarter
Ik heb toch nooit gezegd dat ik dit zelf heb geschreven ?

Dat is iets wat ik doorgestuurd heb gekregen om me op het juiste pad te zetten.

Ik heb al zoveel opgezocht (ook MSDN) en telkens is het iets anders etc ...

Op een gegeven moment weet ik het ook niet meer hoor zeker als je nog nooit met C# hebt gewerkt en ook niet met de materie (?stream). Ze verwachten wel dat het moet werken en meer hulp als zoek nog wat verder je vind het wel krijg ik hier ook niet (heb het niet over GoT).

Zoals ik al zei heb ik de code van een downloadmanager die werkt (freeware) gevonden en heb veel vergeleken. Wat ik probeerde te doen is via de .AppendHeader en ContentType een popup te laten komen zodat je zelf kan kiezen waar de file op te slaan ipv in een textbox in te vullen want imho dat is niet de juiste manier.

Maar goed ik zoek verder en test uit.


C#: tabwidth
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Put the object argument into an int variable
                int startPointInt = Convert.ToInt32(startPoint);
                // Create a request to the file we are downloading
                webRequest = (HttpWebRequest)WebRequest.Create(txtUrl.Text);
                // Set the starting point of the request
                webRequest.AddRange(startPointInt);

                // Set default authentication for retrieving the file
                webRequest.Credentials = CredentialCache.DefaultCredentials;
                // Retrieve the response from the server
                webResponse = (HttpWebResponse)webRequest.GetResponse();
                // Ask the server for the file size and store it
                Int64 fileSize = webResponse.ContentLength;
                
                // Open the URL for download 
                strResponse = webResponse.GetResponseStream();

                // Create a new file stream where we will be saving the data (local drive)
                if (startPointInt == 0)
                {
                    strLocal = new FileStream(txtPath.Text, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
                }
                else
                {
                    strLocal = new FileStream(txtPath.Text, FileMode.Append, FileAccess.Write, FileShare.None);
                }
                
                // It will store the current number of bytes we retrieved from the server
                int bytesSize = 0;
                // A buffer for storing and writing the data retrieved from the server
                byte[] downBuffer = new byte[2048];

                // Loop through the buffer until the buffer is empty
                while ((bytesSize = strResponse.Read(downBuffer, 0, downBuffer.Length)) > 0)
                {
                    // Write the data from the buffer to the local hard drive
                    strLocal.Write(downBuffer, 0, bytesSize);
                    // Invoke the method that updates the form's label and progress bar
                    this.Invoke(new UpdateProgessCallback(this.UpdateProgress), new object[] { strLocal.Length, fileSize + startPointInt });

                    if (goPause == true)
                    {
                        break;
                    }
                }
            }
            finally
            {
                // When the above code has ended, close the streams
                strResponse.Close();
                strLocal.Close();
            }
        }

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:41

TeeDee

CQB 241

Zoals ik al zei heb ik de code van een downloadmanager die werkt (freeware) gevonden en heb veel vergeleken. Wat ik probeerde te doen is via de .AppendHeader en ContentType een popup te laten komen zodat je zelf kan kiezen waar de file op te slaan ipv in een textbox in te vullen want imho dat is niet de juiste manier.
Aan de server side zal je dit imo moeten regelen dmv content-disposition aan je headers meegeven.

[ Voor 64% gewijzigd door TeeDee op 26-03-2008 13:19 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

Verwijderd schreef op woensdag 26 maart 2008 @ 13:13:
weet ik het ook niet meer hoor zeker als je nog nooit met C# hebt gewerkt en ook niet met de materie (?stream). Ze verwachten wel dat het moet werken
scriptrequest dus
zeg: "ik kan dat niet" of leer eerst C#

Verwijderd

Topicstarter
TeeDee schreef op woensdag 26 maart 2008 @ 13:18:
[...]


Aan de server side zal je dit imo moeten regelen dmv content-disposition aan je headers meegeven.
Ja hoor weet ik, dat stuk werk perfect. De stream wil gewoon niet werken, hij download 4kb van een file van 48kb en in die file zit dan niks in natuurlijk.

Wat ik nu natuurlijk krijg is een NullRefference omdat ik geen New gebruik. vb. strLocal = new Filestream(...).
Dat is het probleem bij de filestream moet je altijd eerst het path opgeven, hoe zorg ik ervoor dat dat path het path is dat ik gekozen heb bij de popup ?

Is het wel mogelijk wat ik wil doen ?

C#: tabwidth
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Net;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

namespace DownloadStream
{
    public partial class _Default : System.Web.UI.Page
    {
        // The stream of data retrieved from the web server
        private Stream rs;
        // The request to the web server for file information
        private HttpWebRequest webRequest;
        // The response from the web server containing information about the file
        private HttpWebResponse webResponse;
        // The stream of data that we write to the harddrive
        private Stream strLocal;

        protected void Page_Load(object sender, EventArgs e)
        {

            try
            {

                string url = string.Empty;
                if (url == null || url.Length == 0)
                {
                    url = "http://10.0.2.2/voorbeeld.doc";
                }

                //Initialize the input stream
                webRequest = (HttpWebRequest)WebRequest.Create(url);
                webRequest.Credentials = CredentialCache.DefaultCredentials;
                webResponse = (HttpWebResponse)webRequest.GetResponse();
                //HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                //HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

                rs = webResponse.GetResponseStream();

                //Initialize the output stream        
                //Response.Clear();
                //string file = Request.QueryString["file"];
                //Response.AppendHeader("Content-Disposition:", "attachment; filename=" + file);  
                Response.AppendHeader("Content-Disposition:", "attachment; filename=voorbeeld.doc");
                Response.AppendHeader("Content-Length", webResponse.ContentLength.ToString());
                Response.ContentType = "application/octet-stream";

                //strLocal = new FileStream(strLocal, FileMode.Append, FileAccess.Write, FileShare.None);

                //Populate the output stream 
                int bytesSize = 0;
                byte[] ByteBuffer = new byte[2048];
                //MemoryStream ms = new MemoryStream(ByteBuffer, true);
                //FileStream fs = new FileStream(, FileMode.OpenOrCreate, FileAccess.Write);
                //Stream rs = req.GetResponse().GetResponseStream();
                //byte[] bytes = new byte[1024];
                while ((bytesSize = rs.Read(ByteBuffer, 0, ByteBuffer.Length)) > 0)

                {
                  //Response.Write(ms.ToArray());
                  //strLocal = new FileStream
                  strLocal.Write(ByteBuffer, 0, bytesSize);
                  //Response.BinaryWrite(ByteBuffer.ToString);

                  Response.Flush();
                  bytesSize = 0;
                  //ByteBuffer = new byte[1024]; 
                   
                }

                //Cleanup
                rs.Close();
                strLocal.Close();
                //Response.End();
                //ms.Close();
                //ms.Dispose();
                //rs.Dispose();
                //ByteBuffer = null;
            }

            catch (Exception ex)
            {
                Console.WriteLine("{0} Exception caught.", e);
            }
        }

    }
}

[ Voor 74% gewijzigd door Verwijderd op 26-03-2008 13:54 ]


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:41

TeeDee

CQB 241

Mja, dit is gewoon in het wilde weg schieten naar mogelijke oorzaken. Probeer eerst eens met een klein projectje te beginnen om vervolgens een download manager in elkaar te boxen.

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Als ik het zo doe werkt het perfect, hij download de file naar het path dat hard gecodeerd staat.

code:
1
strLocal = new FileStream(@"C:\voorbeeld.doc", FileMode.Append, FileAccess.Write, FileShare.None);


Maar ik wil dus dat je een popup krijgt en je zelf kan kiezen waar je de file wilt opslaan.

En de vraag is dus hoe. Dit werkt dus niet. Dat is het enigste probleem dat ik nog heb.

code:
1
2
3
4
5
Response.AppendHeader("Content-Disposition:", "attachment; filename=voorbeeld.doc");
Response.AppendHeader("Content-Length", webResponse.ContentLength.ToString());
String locatie = Response.ContentType = "application/octet-stream";

strLocal = new FileStream(locatie, FileMode.Append, FileAccess.Write, FileShare.None);

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Is toch ook logisch dat locatie niet op deze manier wekt? Je wijst zowel aan locatie EN Response.ContentType de waarde "application/octet-stream" toe. Dat is natuurlijk geen geldige bestandsnaam.

Sluit Visual Studio en surf naar BOL en koop een boek als C#/VB.NET in 24 uur want dit topic begint nu zo'n beetje toch basis kennis te behandelen. Het posten van elke keer je project is ook niet de bedoeling. Een andere oplossing: Rent A Coder.

If it isn't broken, fix it until it is..


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:41

TeeDee

CQB 241

Volgens mij ben je nu echt ongelofelijk van alles door elkaar aan het halen, en dat maakt het begrijpen van onze kant zeer lastig.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

code:
1
strLocal = new FileStream(@"C:\voorbeeld.doc", FileMode.Append, FileAccess.Write, FileShare.None);

Maar ik wil dus dat je een popup krijgt en je zelf kan kiezen waar je de file wilt opslaan.
Die FileStream schrijft op de C:\ van de server... Allesinds niet op een computer die de pagina opvraagt (gelukkig maar). Tenzij je met ActiveX of iets anders bezig bent, maar da's niet het geval.
Je hebt geen enkel idee wat een FileStream object doet of is.
En alle gedownloade files eerst eventjes lokaal op je server opslaan lijkt me ook geen goed idee.

Die "popup" toont je browser je omdat er in de content type van wat de browser krijgt staat dat het een bestand is en geen html pagina bv.

[ Voor 19% gewijzigd door ? ? op 26-03-2008 14:42 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:34

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op woensdag 26 maart 2008 @ 13:13:
Ik heb toch nooit gezegd dat ik dit zelf heb geschreven ?
:D

Daar is nu net waar het in programming om draait. Support op niet eigen geschreven code moet je zoeken bij de maker van de betreffende code. Daarnaast verwachten we dat als iets niet werkt je zelf aan het debuggen slaat en je laat echt zien dit niet gedaan te hebben of echt niet te begrijpen wat je nu aan het doen bent.

Dat je iets niet weet is niet erg, dat je zelf de moeite niet lijkt te nemen om je er even goed in te verdiepen is dat wel want ook dat verwachten we hier van je.
En de vraag is dus hoe. Dit werkt dus niet. Dat is het enigste probleem dat ik nog heb.
En dan is hier altijd de vraag: wat heb je nu zelf al geprobeerd om je probleem op te lossen en wat werkt er dan niet. "Het werkt niet" zegt ons helemaal niks. Zeg dan wat je had verwacht, wat het wel doet, wat het niet doen en geef de eventuele foutmeldingen die je krijgt.

Dit gaat dus dicht. Probeer jezelf er nu eerst eens in te verdiepen voordat je hier een topic opent. Het is hier een discussie forum en geen helpdesk om ff snel je code te laten fixen.

[ Voor 29% gewijzigd door Creepy op 26-03-2008 15:08 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.