webForumDet fria alternativet

HtmlInputFile.PosteFile problem

6 svar · 440 visningar · startad av margar-0

margar-0Medlem sedan nov. 200362 inlägg
#1

Då jag ska ladda upp filer använder jag mig av kontrollen HtmlInputFile. Jag får fel då jag laddar upp stora filer som tex en film. Efter att ha hämtat filen med kontrollen klickar jag på en knapp som ska ladda upp filen. Där har jag en felkontroll som kontrollerar om filen är större än 2mb.
Problemet är att suben aldrig körs om det är för stor fil, utan jag skickas till en sida med samma adress men med följande fel:
"Sidan du söker efter är inte tillgänglig för tillfället. Det kan bero på tekniska problem med webbsidan eller så behöver du justera inställningarna för webbläsaren."

Ett litet exempel:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If filHamtaFil.PostedFile.ContentLength > 20000 Then
            Response.Write("hej")
        End If
    End Sub

1. Har PostedFile någon max filstorlek som man får ladda upp?
2. Varför körs inte suben?

PMedlem sedan jan. 20012 107 inlägg
#2

drunken_master skrev:

sätt maxRequestLength i web.config till den storlek du behöver.

<location>
	<system.web>
	<!-- Max upload filstorlek-->
		<httpRuntime maxRequestLength="8192" />
margar-0Medlem sedan nov. 200362 inlägg
#3

Skrev in detta i web.config:
<httpRuntime maxRequestLength="8192" />

Men får fortfarande samma fel som jag beskrev ovan. Varför?

margar-0Medlem sedan nov. 200362 inlägg
#4

Är det ingen som har varit med om något liknande eller har någon lösning på problemet?

fredrikMedlem sedan dec. 19991 082 inlägg
#5

Hur stor fil försöker du ladda upp?

Värdet du anger är i "KB", dvs. nu har du satt gränsen till ca 8Mb.
Du får alltså öka på det värdet om du vill kunna ladda upp ännu större filer (så att du själv kan sköta valideringen av storleken).

margar-0Medlem sedan nov. 200362 inlägg
#6

Problemet är att jag inte kan ta emot filen. Jag har en FileField kontroll där jag hämtar tex en bild. Sen har jag en knapp för att ladda upp bilden till servern, men det är här problemet uppstår. Suben för att
"Ladda upp fil" körs aldrig eller med andra ord ingeting körs i code-behind så jag kan inte kontrollera något felmedelande.

Jag skickar med web.config så kanske ni kan se om den ser okej ut, det kanske är den som spökar.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <location>
        <system.web>
            <httpRuntime maxRequestLength="4096"></httpRuntime>
            
            <compilation defaultLanguage="vb" debug="true">
                <assemblies>
                    <add assembly="CrystalDecisions.CrystalReports.Engine, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
                    <add assembly="CrystalDecisions.ReportSource, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
                    <add assembly="CrystalDecisions.Shared, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
                    <add assembly="CrystalDecisions.Web, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
                </assemblies>
            </compilation>
            
            <customErrors mode="RemoteOnly" />
            
            <authentication mode="Windows" />
            
            <authorization>
                <allow users="*" /> <!-- Allow all users -->
                
            </authorization>
            
            <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
            
            <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
                cookieless="false" timeout="20" />
            
            <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
            
            <pages validateRequest="false" />
        </system.web>
    </location>
</configuration>

I suben ser felkontrollen ut så här:

If FileField.PostedFile.ContentLength > 4096 Then
  Visa felmeddelande
Else
  Ladda upp bild till servern
End If
fredrikMedlem sedan dec. 19991 082 inlägg
#7

Ja, men du måste fortfarande ställa in i web.config att du vill kunna ta emot filer större än 4MB...

Ändra tex:
<httpRuntime maxRequestLength="40960"></httpRuntime>

Så tillåter du 40MB, sen är det ju upp till dig att berätta för användaren om det är en för stor fil eller inte.

Genererad på 374 ms · cache AV · v20260730165559-full.f96bc7eb