[VB.NET] C# naar VB gaat niet goed

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 07:14

Damic

Tijd voor Jasmijn thee

Topicstarter
Het volgende stukje leest bestanden in en zet ze bij in de http header als bytes, nu de header word aangemaakt maar geen data. Als ik een breakpoint instel en dan step by step doen dan zien ik hem over de while springen, terwijl er wel data in de filestream zit. Wat gaat er verkeerd, iemand een idee?
Wat ik al geprobeerd heb: euhm niet veel want snap niet wat er mis gaat.

Van (originele code: http://bytes.com/topic/c-...ow-upload-file-via-c-code )
C#:
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
string headerTemplate = "Content-Disposition: form-data; name=\"{0}\";
filename=\"{1}\"\r\n Content-Type: application/octet-stream\r\n\r\n";

for(int i=0;i<files.Length;i++)
{

string header = string.Format(headerTemplate,"file"+i,files[i]);

byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);

memStream.Write(headerbytes,0,headerbytes.Length);
length += headerbytes.Length;

FileStream fileStream = new FileStream(files[i], FileMode.Open,
FileAccess.Read);
byte[] buffer = new byte[1024];

int bytesRead = 0;

while ( (bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0 )
{
memStream.Write(buffer, 0, bytesRead);
length += bytesRead;
}
memStream.Write(boundarybytes,0,boundarybytes.Leng th);
length += boundarybytes.Length;

fileStream.Close();
}

* length gebruikt ie niet in de volledige code dat ie heeft gepost dus volgens mij mag je dat negeren.

naar
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                      If File.Exists(sFiles) Then
                            Dim headerTemplate As String = "Content-Disposition: form-data; name=""{0}""; filename=""{1}""" & Environment.NewLine & "Content-Type: application/octet-stream" & Environment.NewLine & Environment.NewLine
                            ' For i = 0 To  sFiles.Length
                            Dim headerbytes As Byte() = encoding.GetBytes(String.Format(headerTemplate, "upfile", sFiles))
                            memStream.Write(headerbytes, 0, headerbytes.Length)
                            Using fileStream As FileStream = New FileStream(sFiles, FileMode.Open, FileAccess.Read)
                                Dim buffer(1024) As Byte
                                Dim bytesRead As Int64 = 0
                                While ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) <> 0)
                                    memStream.Write(buffer, 0, bytesRead)
                                End While
                            End Using
                            'if i<> sfiles.length then memStream.Write(boundarybytes, 0, boundarybytes.Length)
                        End If
*ik gebruik de file array nog niet, iets met in de hoofding dat je altijd iets moet ingevuld hebben, eens uitzoeken als ik tijd heb :*)

[ Voor 4% gewijzigd door Damic op 04-05-2015 21:59 ]

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 09:59
VB.NET ondersteunt geen multi-assignments.

Je zou de volgende code:

Visual Basic .NET:
1
2
3
While ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) <> 0)
    memStream.Write(buffer, 0, bytesRead)
End While


om kunnen schrijven naar iets als:

Visual Basic .NET:
1
2
3
4
5
bytesRead = fileStream.Read(buffer, 0, buffer.Length)
While bytesRead <> 0
    memStream.Write(buffer, 0, bytesRead)
    bytesRead = fileStream.Read(buffer, 0, buffer.Length)
End While

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 07:14

Damic

Tijd voor Jasmijn thee

Topicstarter
Ha, dat verklaart veel :(

Dank je

[ Voor 168% gewijzigd door Damic op 05-05-2015 07:06 ]

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag