Artigo: 892442 - Última revisão: sexta-feira, 12 de Março de 2010 - Revisão: 2.0

Os utilizadores devem submeter um caminho totalmente qualificado quando utiliza o "input type = ficheiro de" elemento de uma aplicação 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 | Reduzir tudo

Sintomas

No Microsoft Windows XP Service Pack 2 (SP2), poderá utilizar um input type = ficheiro elemento de uma aplicação. Se permitir que o utilizador escrever um caminho na parte de 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 utilizador submete o formulário utilizando um input type = submeter elemento, nada acontece.
  • Se o utilizador tentar submeter o formulário que contém o controlo clicando numa hiperligação e, que ligam invoca o código JavaScript que chame o método de Submeter, o utilizador recebe uma "acesso é negado" mensagem de erro de processamento de scripts. Por exemplo, postbacks para controlos de Microsoft ASP.NET do lado do servidor podem utilizar o método de Submeter.

Como contornar

Para contornar este comportamento, siga estes passos:
  1. Se conseguir aceder o código que chama o método de Submeter, processar o erro de script e, em seguida, solicita ao utilizador para introduzir um caminho totalmente qualificado.
  2. Impedir que o utilizador editar o conteúdo da caixa de texto. Isto efectivamente força o utilizador clicar em Procurar para escolher o caminho do ficheiro. Por exemplo, utilize o seguinte exemplo de código para impedir que o utilizador 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 controlo ActiveX para fornecer esta funcionalidade.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Passos para reproduzir o comportamento

  1. Cole o seguinte exemplo de código num ficheiro denominado Simple.html e, em seguida, guarde o ficheiro no 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 seguinte exemplo de código num ficheiro denominado 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. Num Web browser, abra Simple.html.
  4. Na caixa de texto que está a ser o input type = ficheiro elemento, escreva algum texto que não inclua C:\ ou um caminho semelhante.
  5. Clique em Submeter. Aviso de que nada ocorre.
  6. Faça clique sobre esta hiperligação faz com que o "acesso negado" mensagem de erro.. Recebe uma mensagem de erro de script "Acesso negado".

Referências

Para mais informações, visite o seguinte Web 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )