Jag har hittat denna kod och den fungerar också, men jag har en fundering. If-satsen kontrollerar att filen existerar. Jag kommer in i If-satsen oavsett om jag hämta en fil eller om jag lämnar input file tom eller om jag skriver in ett värde tex dfgdfg. Ser ju onekligen rätt ut. En fråga bara så jag inte fattar fel här, du kör väl det här i samband med ett formulär där du ska ladda upp en fil? Alltså en filruta med browse-knapp? Denna sida registrerar böcker och är en ascx-fil. Jag fyller i en masssa bokuppgifter plus att jag har en filruta med browseknapp Denna användarkontroll laddar jag in i en aspx-sida. På aspx sidan genereras ju automatiskt form-taggarna. Det låter rätt. Om filrutan med browseknapp är tom så ska PostedFile = nothing. Provade exakt denna kod men det fungerar inte. Funkar den för dig? Ja den funkar för mig. Jag gav fullständig behörighet. Om du saknar en import, System.IO, så får du ett felmeddelande när du kompilerar.Fundering över PostedFile
Vad kontrollerar denna If-sats: If Not (myFile.PostedFile Is Nothing) Then
Jag trodde att om kontrollen för att hämta bilden är tom så körs inte koden, men det var fel.
<code>
If Not (myFile.PostedFile Is Nothing) Then
Dim intFileNameLength as Integer
Dim strFileNamePath as String
Dim strFileNameOnly as String
'Logic to find the FileName (excluding the path)
strFileNamePath = MyFile.PostedFile.FileName
intFileNameLength = Instr(1, StrReverse(strFileNamePath), "\")
strFileNameOnly = Mid(strFileNamePath, (Len(strFileNamePath)-intFileNameLength)+2)
myFile.PostedFile.SaveAs("c:\inetpub\wwwroot\yourwebapp\upload\" & strFileNameOnly)
lblMsg.Text = "File Upload Success."
End If
</code>Sv: Fundering över PostedFile
"myFile.PostedFile Is Nothing" är lika med True om filen inte finns och False om den finns. När du sätter Not framför så blir det med andra ord True om filen finns.
Anledningen till att den ska vara där är att annars för söker koden utföra operationer med en fil som inte existerar vilket resulterar i ett fel.
/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nuSv: Fundering över PostedFile
Varför?Sv: Fundering över PostedFile
Du har funktioner för att ta ut filnamn/filtillägg etc i System.IO.PathSv: Fundering över PostedFile
Om du browsar och väljer en fil så har du en Postad fil, om du lämnar rutan tom så har du ingen Postad fil.
/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nuSv: Fundering över PostedFile
Verkar detta rätt, eller måste formuläret vara annorlunda?Sv: Fundering över PostedFile
En standardkod för att ladda upp en fil är
<code>
<Script Runat="Server">
Sub Button_Click(ByVal s As Object, ByVal e As EventArgs)
If Not inpFileUp.PostedFile Is Nothing Then
inpFileUp.PostedFile.SaveAs("c:\Uploads\NewFile.gif")
End If
End Sub
</Script>
<html>
<head><title>HtmlInputFile.aspx</title></head>
<body>
<form EncType="multipart/form-data" Runat="Server">
<input id="inpFileUp" Type="File" Runat="Server">
<p>
<asp:Button
Text="Upload File!"
OnClick="Button_Click"
Runat="Server" />
</form>
</body>
</html>
</code>
/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nuSv: Fundering över PostedFile
Sv: Fundering över PostedFile
Vad är det som inte funkar för dig? Kontrollera så att rättigheterna på mappen du laddar upp till stämmer.
/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nuSv: Fundering över PostedFile
Är det något jag måste importera högst upp, typ Imports ...Sv: Fundering över PostedFile
Är det på mappen c:/Uploads/ du har satt rättigheterna då?
/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nu