OVH Cloud OVH Cloud

TextBox, Text, HttpRequestValidationException

1 réponse
Avatar
Antoine Sirianni
Bonjour,

Je souhaite visualiser le contenu d'un fichier dans une textbox.
J'ai donc créé une page dans laquelle j'ai instancié un "input type=file"
une textbox et un bouton "load".

Le fichier est converti en Byte puis en Char puis en String,
le tout passant par l'attribut Text de la TextBox.

Lorsque je charge un fichier la première fois, tout se passe bien.
Mais lors du deuxième chargement successif, si le fichier chargé contient
des "double quote", alors j'obtiens l'exception suivante:
HttpRequestValidationException

Comment faire pour éviter ce problème?

Merci d'avance,
Antoine

PS: voici mon code
<%@ PreviousPageType VirtualPath="~/my_example.aspx" %>

<html>
<script runat="server">

public Function GetFileContent(ByVal File As System.Web.HttpPostedFile) As
String

Dim FileLen As Integer
Dim MyStream As System.IO.Stream

FileLen = File.ContentLength
Dim Bytes(FileLen) As Byte
Dim Chars(FileLen) As Char

' Initialize the stream.
MyStream = File.InputStream

' Read the file into the byte array.
MyStream.Read(Bytes, 0, FileLen)

'Instanciate an ASCII Byte Decoder
Dim asciiDecoder As Decoder = Encoding.Ascii.GetDecoder()

'Decode Bytes to Chars
asciiDecoder.GetChars(Bytes, 0, FileLen, Chars, 0)

'Create String and convert Chars to String
Dim MyString As New String(Chars)

Return MyString

End Function

Sub LoadBtn_Click(Sender as Object, e as EventArgs)

Dim fs As Object
fs = CreateObject("Scripting.FileSystemObject")

If (fs.FileExists(MyFile.PostedFile.FileName))=true Then
textbox.Text=GetFileContent(MyFile.PostedFile)
Else
Console.Write("File "+MyFile.PostedFile.FileName+" does not exist")
End If

fs=nothing

End Sub

</script>

<body>
<form action="load.aspx" runat="server">
<h4>Select XML file to load: </h4>
<hr></hr>
<input id="MyFile" type="file" width="75%" lang="EN" runat="server"
/>
<br></br>
<input type="submit"
value="Load"
OnServerclick="LoadBtn_Click"
runat="server" />
<br></br>
<asp:TextBox id="textbox" rows="10" width="75%"
textmode="Multiline" readonly="true" runat="server"/>
</form>
</body>
</html>

1 réponse

Avatar
RAVAILLE James
Bonjour,

A partir de ASP .NET 1.1 :

Il est possible de désactiver la validation de la requête, afin de ne pas
valider les données soumises par un navigateur, avec cette directive :

<%@ Page validateRequest="false"%>

Mais attention au niveau de sécurité que requiert votre page...


Cordialement,

--
James RAVAILLE.
MCAD .NET et MCT .NET
http://www.certifdotnet.com


"Antoine Sirianni" a écrit :

Bonjour,

Je souhaite visualiser le contenu d'un fichier dans une textbox.
J'ai donc créé une page dans laquelle j'ai instancié un "input type=file"
une textbox et un bouton "load".

Le fichier est converti en Byte puis en Char puis en String,
le tout passant par l'attribut Text de la TextBox.

Lorsque je charge un fichier la première fois, tout se passe bien.
Mais lors du deuxième chargement successif, si le fichier chargé contient
des "double quote", alors j'obtiens l'exception suivante:
HttpRequestValidationException

Comment faire pour éviter ce problème?

Merci d'avance,
Antoine

PS: voici mon code
<%@ PreviousPageType VirtualPath="~/my_example.aspx" %>

<html>
<script runat="server">

public Function GetFileContent(ByVal File As System.Web.HttpPostedFile) As
String

Dim FileLen As Integer
Dim MyStream As System.IO.Stream

FileLen = File.ContentLength
Dim Bytes(FileLen) As Byte
Dim Chars(FileLen) As Char

' Initialize the stream.
MyStream = File.InputStream

' Read the file into the byte array.
MyStream.Read(Bytes, 0, FileLen)

'Instanciate an ASCII Byte Decoder
Dim asciiDecoder As Decoder = Encoding.Ascii.GetDecoder()

'Decode Bytes to Chars
asciiDecoder.GetChars(Bytes, 0, FileLen, Chars, 0)

'Create String and convert Chars to String
Dim MyString As New String(Chars)

Return MyString

End Function

Sub LoadBtn_Click(Sender as Object, e as EventArgs)

Dim fs As Object
fs = CreateObject("Scripting.FileSystemObject")

If (fs.FileExists(MyFile.PostedFile.FileName))=true Then
textbox.Text=GetFileContent(MyFile.PostedFile)
Else
Console.Write("File "+MyFile.PostedFile.FileName+" does not exist")
End If

fs=nothing

End Sub

</script>

<body>
<form action="load.aspx" runat="server">
<h4>Select XML file to load: </h4>
<hr></hr>
<input id="MyFile" type="file" width="75%" lang="EN" runat="server"
/>
<br></br>
<input type="submit"
value="Load"
OnServerclick="LoadBtn_Click"
runat="server" />
<br></br>
<asp:TextBox id="textbox" rows="10" width="75%"
textmode="Multiline" readonly="true" runat="server"/>
</form>
</body>
</html>