Hej! Detta gör förvisso .Net av sig självt men kolla om du in din html har följande i Action taggen multipart/form-data har jag. jaha Vad ska man göra? Ska man först spara det på servern i en viss katalog och sen spara den i databasen? Det måste väl gå på nåt annat sätt? Det du gör i din od, är att du postar en fil, sedan skalar en byte array som är lika stor som filen sedan försöker du läsa filen via den path där filen låg i, vilket då gör att du kollar på servern.filuppladdning
Jag har skrivit en applikation i ASP.NET (C#) där användaren ska kunna ladda upp filer och spara i databasen. Användaren kan mha en input html-kontroll ladda upp filerna. Allt går bra när man bläddrar efter filen. Man hittar och väljer sin fil. Sen trycker man på "spara fil" knapp och det är där det inte går bra.
Får felmeddelandet:
Could not find file "C:\foo.doc".
eller
Could not find a part of the path "C:\test\foo.doc".
vad beror det på? Filen foo.doc och test\foo.doc finns där den anger.
Mvh,
Naz Sv: filuppladdning
enctype="multipart/form-data"
Sedan gör du något på detta viset va?
<code>
FileName.InnerHtml = MyFile.PostedFile.FileName;
MyContentType.InnerHtml = MyFile.PostedFile.ContentType;
ContentLength.InnerHtml =
MyFile.PostedFile.ContentLength.ToString();
MyFile.PostedFile.SaveAs("<Path>");
</code>
//Johan NSv: filuppladdning
jag gör följande:
<code>
int fileLen = tbFile.PostedFile.ContentLength;
string filePathAndName = tbFile.PostedFile.FileName;
int strPos = filePathAndName.LastIndexOf("\\");
byte[] fileBinaryData = new byte[fileLen];
Stream fStream = (new StreamReader(filePathAndName, System.Text.Encoding.UTF8)).BaseStream;
int n = fStream.Read(fileBinaryData, 0, fileLen);
//Spara i databasen.
</code>
Felet uppstår vid raden:
(Stream fStream = (new StreamReader(filePathAndName,
System.Text.Encoding.UTF8)).BaseStream;
När jag testade förut så gick allting bra eftersom webservern och klienten var på samma maskin. Men nu har jag flyttat webservern till annan maskin och det är då det här felet uppstår.
Mvh,
NazSv: filuppladdning
Det är för att:
Stream fStream = (new StreamReader(filePathAndName, System.Text.Encoding.UTF8)).BaseStream;
Letar på servern o inte din dator.
//Johan NSv: filuppladdning
Det är inte nåt med ASPNET kontots rättigheter?Sv: filuppladdning
Gör så hör använd dig av:
<code>
MyStream = MyFile.InputStream
MyStream.Read(input, 0, FileLen)
</code>
Och använd sedan denna Stream.
//Johan N