ID do artigo: 892442 - Última revisão: sexta-feira, 12 de março de 2010 - Revisão: 2.0

Os usuários devem enviar um caminho totalmente qualificado ao usar o "input type = arquivo" elemento em um aplicativo da Web no Windows XP Service Pack 2

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

No Microsoft Windows XP Service Pack 2 (SP2), você pode usar um input type = arquivo elemento em um aplicativo. Se você deixar o usuário digite um caminho na parte caixa de texto do elemento e não fornecem um caminho totalmente qualificado que inclua a unidade e pasta raiz, uma das seguintes condições ocorre:
  • Se o usuário submete o formulário usando um input type = enviar elemento, nada ocorre.
  • Se o usuário tentar enviar o formulário que contém o controle clicando em um link e vinculadas invoca código JavaScript que chama o método Submit, o usuário receberá um "acesso negado" mensagem de erro de script. Por exemplo, postbacks para controles do Microsoft ASP.NET no servidor talvez use o método Enviar.

Como Contornar

Para contornar esse comportamento, execute as seguintes etapas:
  1. Se você puder acessar o código que chama o método Submit, manipular o erro de script e, em seguida, solicitar ao usuário que insira um caminho totalmente qualificado.
  2. Impedir que o usuário editar o conteúdo da caixa de texto. Isso efetivamente força o usuário clicar em Procurar para escolher o caminho do arquivo. Por exemplo, usar o exemplo de código a seguir para impedir que o usuário editar o conteúdo da caixa de texto no Microsoft Internet Explorer.
    <html>
    	<head>
    		<script language="javascript">
    		<!--
    function test()
    {
    	if( event.keyCode == 8 )
    	{
    		return false;
    	}
    	return true;
    }
    		-->
    		</script>
    	</head>
    	<body>
    		<form name="Form1" action="SimpleResults.aspx" method="post" ID="Form1">
    			<input id="txtFileUpload" onkeydown="return test();" onbeforeeditfocus="return false;" type="file" name="txtFileUpload" />
    			<p />
    			<input type="submit" value="Submit" ID="Submit1" NAME="Submit1" />
    		</form>
    	</body>
    </html>
  3. Crie seu próprio controle ActiveX para fornecer essa funcionalidade.

Situação

Esse comportamento é próprio do projeto.

Mais Informações

Etapas para reproduzir o comportamento

  1. Cole o exemplo de código a seguir em um arquivo chamado Simple.html e, em seguida, salve o arquivo em seu servidor Web.
    <html>
    <head>
        <script language="javascript">
    function go()
    {
    	theform = document.Form1;
    	theform.submit();
    }
        </script>
    </head>
    <body>
        <form name="Form1" action="SimpleResults.aspx" method="post">
            <h2>This example demonstrates the change to the "input type=file" element in Windows XP SP2:
            </h2>
            <p>
                Note: You cannot put information in an "input type=file" element by using script code.  For more information, see the following article in the Microsoft Knowledge Base: <a href="http://support.microsoft.com/kb/266087">266087</a><br />
                <input id="txtFileUpload" style="WIDTH: 346px; HEIGHT: 20px" type="file" size="30" name="txtFileUpload" />
            </p>
            <p>
                1. Now, if you enter a path that is missing the drive letter and root folder in
                the text box part of the control, and&nbsp;then you click submit, the Submit method call will not
                be permitted.  Therefore, nothing will occur.<br />
                <input type="submit" value="Try to use a Submit button" />
            </p>
            <p>
                2. Also, if you enter a path that is missing the drive letter and root folder in the
                text box part of the control, and&nbsp;then you click a link that uses scripting to submit
                the form, you receive an "Access is Denied" scripting error message.<br />
                <a onclick="javascript:go()" href="#">This link causes the "Access is Denied" error message.</a>
            </p>
        </form>
    </body>
    </html>
  2. Cole o exemplo de código a seguir em um arquivo chamado SimpleResults.aspx.
    <%@ Page Language="C#" %>
    <script runat="server">
        void Page_Load()
        {
            txtResults.Text = Request.Form["txtFileUpload"];
        }
    </script>
    <html>
    <head>
    </head>
    <body>
        <form runat="server">
            <p>
                Here are the results of submitting the contents of the "input type=file" element. 
            </p>
            <p>
                <asp:TextBox id="txtResults" runat="server" Width="469px"></asp:TextBox>
            </p>
        </form>
    </body>
    </html>
  3. Em um navegador da Web, abra Simple.html.
  4. Na caixa de texto que está sendo o input type = arquivo elemento, digite o texto não inclui C:\ ou um caminho semelhante.
  5. Clique em Enviar. Observe que nada ocorre.
  6. Clique em Este link faz com que o "acesso negado" mensagem de erro.. Você recebe uma mensagem de erro de script "Acesso negado".

Referências

Para obter mais informações, visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms535263.aspx (http://msdn2.microsoft.com/en-us/library/ms535263.aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Windows XP Service Pack 2 nas seguintes plataformas
    • Microsoft Internet Explorer 6.0
  • Windows Internet Explorer 7
Palavras-chave: 
kbmt kbprb KB892442 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 892442  (http://support.microsoft.com/kb/892442/en-us/ )