---
title: "upload med HttpWebRequest"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/87556-upload-med-httpwebrequest"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "peterbladh"
published: "2003-10-03T14:15:20.000Z"
updated: "2003-10-07T11:30:31.000Z"
replies: 5
views: 304
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/87556-upload-med-httpwebrequest"
---

# upload med HttpWebRequest

## #1 — peterbladh, 2003-10-03T14:15Z

Hej

Jag skulle vilja göra samma sak som WebClient Upload gör fast med HttpWebRequest. Detta för att koden skall vara compact framework kompatibel.

WebClient Kod

```
WebClient client = new WebClient();
client.UploadFile(Url, "POST", FileToUpload);
```

HttpWebRequest kod

```
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(Url);
req.Timeout = 10000; 
req.Method = "POST";
req.KeepAlive= false;
FileInfo finfo = new FileInfo(FileToUpload);
FileStream fs = File.Open(FileToUpload, FileMode.Open);
byte [] data = new byte[fs.Length];
req.ContentLength = finfo.Length;
fs.Read(data, 0, (int)fs.Length);
Stream stream = req.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
Console.WriteLine(res.ToString());
res.Close();
```

WebClient funkar. HttpWebRequest ger mig 500 Internal Error.

Vet nån vad som är fel?

Tack på förhand!

Permalänk: https://www.webforum.nu/p/87556

## #2 — niko, 2003-10-03T21:15Z

Jag körde båda koderna med en sniffer påslagen och den första uppförde sig som en webbläsare och skickade snyggt och prydligt alla headers:

```
POST / HTTP/1.1.

Content-Length: 24895
Host: hplinux

Content-Disposition: form-data; 
name="file"; 
filename="fil.zip"
Content-Type: application/octet-stream
```

Den andra koden skickade bara *Content-Length* och sen direkt all binärdata. Om du vill att webbsidan ska ha en rimlig chans att tolka det så gissar jag att du måste sköta allt sånt manuellt:

```
req.ContentType = ..
rec.headers.add( ..
' osv ..
```

Kolla de metoder som finns under *HttpWebRequest* (eller försök hitta bättre kod).

Permalänk: https://www.webforum.nu/p/1174341

## #3 — peterbladh, 2003-10-07T06:27Z

Hej

Nu har jag labbat en hel del med olika headers, men tyvärr utan att lyckas.

Är det någon som har gjort detta och har lite fungerande kod att visa mig?

Permalänk: https://www.webforum.nu/p/1179012

## #4 — niko, 2003-10-07T09:26Z

Svårt att svara när man inte vet vad som finns på "andra sidan" och tar emot filen.

Men nåt sånt här borde det bli (om den första funkar):

```
// ..
req.KeepAlive= false;
FileInfo finfo = new FileInfo(FileToUpload);
req.ContentType="application/octet-stream";
req.Headers.Add("Content-Disposition: form-data; name=\"file\"; filename=\"" + finfo.Name + "\"");
// ..
```

Du kan också prova med KeepAlive= true.

Permalänk: https://www.webforum.nu/p/1179091

## #5 — peterbladh, 2003-10-07T11:13Z

Nix
Det funkar fortfarande inte.

Servern är en asp-sida med SAFileUp (nu när jag labbar);

\<%
Set upl = Server.CreateObject("Softartisans.FileUp")
upl.Path = "D:\\temp\\"
upl.Save 
%\>

Permalänk: https://www.webforum.nu/p/1179180

## #6 — niko, 2003-10-07T11:30Z

Kan tyvärr inte svara. Om nu den första koden verkligen funkar så är mitt tips att du laddar ner valfri [paketövervakare](http://www.webattack.com/get/axpacketmon.html) så att du ser skillnaderna i det de olika koderna skickar. När du fått dem exakt lika så måste det ju funka.

OBS: När du testar så måste du skicka mot en extern IP (inte lokal).

Permalänk: https://www.webforum.nu/p/1179194

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/87556-upload-med-httpwebrequest
