if (FileUpload.PostedFile != null) { // Check file size (mustn’t be 0) HttpPostedFile myFile = FileUpload.PostedFile; int nFileLen = myFile.ContentLength; if (nFileLen == 0) { lblOutput_excel.Text = "No file was uploaded."; return; } if (System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".xls") { lblOutput.Text = "The file must have an extension of xls"; return;
}
byte[] myData = new Byte[nFileLen]; myFile.InputStream.Read(myData, 0, nFileLen); }
Og undskyld, men, altså, hvorfor i alverden bøvler du med "file upload", når du ikke ved hvordan man erklærer en variaable i C#? Ville det ikke være mere formålstjenligt at lære sproget først?
Undskyld, men jo. Jeg kan sproget nogenlunde, og jeg vil hele tiden lære mere selvfølgelig. Så jeg lærer sproget imens jeg laver hjemmesider.
Jeg tænkte også at man erklærede på den måde, men var ikke sikker på at det hed at erklære. Men det var jo også gjordt.
Men det var rigtigt, nu satte jeg resten op i if sætningen. Og så er jeg kommet videre fra fejlen. Men nu virker det bare ikke. Jeg har prøvet at uploade en fil som hedder: test.xls Men den lægger sig ikke på serveren.
Det gør den nok ikke. Hvilket filnavn ville den skulle have? Er "admin" et katalog? Hvad kommer der ud af Server.MapPath(sSavePath) ? Hvor bruger du myFile.FileName?
Hvad mener du med hvilket filnavn den skulle have. Det burde da være ligemeget hvad filnavnet er, bare den ender med .xls . admin er en mappe på roden.
Jeg forstår ikke helt hvad du mener med hvad der kommer ud af Server.MapPath(sSavePath)?
Og her bruger jeg (myFile.FileName): if (System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".xls")
Det betyder jo bare at hvis ændelsen ikke er .xls så skal den eksekvere dette.
Nej jeg bruger ikke filnavnet noget andet sted, det er bare meningen at man skal kunne uploade hvilken som helst xls fil til serveren.
Det jeg skal bruge den til er at excel filens data skal indlæses til sql serveren, men det virker fint. Men for at det kan virker skal filen ligge på serveren.
Nej det gør jeg vel ikke så. men hvilket indhold er det du mener? Der er jo ikke noget filnavn som indhold skal gemmes i. Der er bare en mappe som filen som man uploader skal gemmes i.
Er det denne kodestump du mener at jeg skal ændre?
System.IO.FileStream newFile = new System.IO.FileStream(Server.MapPath(sSavePath), System.IO.FileMode.Create); newFile.Write(myData, 0, myData.Length); newFile.Close();
Du kan uploade hvad du vil (store filer måske ikke). Men filen skal have et navn på serveren. Første argument til "new FileStream" er filnavnet. Du angiver (formentlig) ikke et filnavn.
Nå ok, så hvis jeg har forstået det rigtigt. Så det der sker med "new FileStream" er at når man uploader en fil så bliver den automatisk omdøbt til det filnavn man angiver.
"Der skal ikke oprettes nogen fil." siger du i dit sidste indlæg. Tidligere skriver du "Jeg har prøvet at uploade en fil som hedder: test.xls Men den lægger sig ikke på serveren."
ok, jeg vil ligge en fil som jeg har på min computer ned i en mappe på mit webhotel. Den skal ikke oprette en ny fil, det er jo en fil som allerede eksistere på min computer som jeg bare vil have op på mit webhotel ved hjælp af file upload
Ja og nej ;) Den kan kun komme til at ligge på webhotellet som en ny fil. Alternativet, som ikke opretter en ny fil, er at "bruge" indholdet af den uploadede fil til et eller andet (tælle tal sammen, eller hvad det kan være), og ikke gemme indholdet.
Nå ok, så har jeg nok misforstået, hvordan man bruger fileupload. Så skal jeg vel oprette en fil. Men det er jo ligesom hvis man skal uploade et billede til webhotellet, så opretter man da ikke en ny vel? kopiere den ikke bare billedet fra din computer til webhotellet?
Der er som sådan ikke noget galt med din kode - jeg kører den (ligner meget) et sted uden problemer. Men der kan så være noget galt i det du ikke viser.
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.