FileUpload.SaveAs(String) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Salva o conteúdo de um arquivo carregado em um caminho especificado no servidor Web.
public:
void SaveAs(System::String ^ filename);
public void SaveAs (string filename);
member this.SaveAs : string -> unit
Public Sub SaveAs (filename As String)
Parâmetros
- filename
- String
Uma cadeia de caracteres que especifica o caminho completo do local do servidor no qual o arquivo carregado será salvo.
Exceções
filename
não é um caminho completo.
Exemplos
O exemplo a seguir demonstra como criar um FileUpload controle que executa a verificação de erros. Antes que o arquivo seja salvo, o HasFile método é chamado para verificar se existe um arquivo a ser carregado. Além disso, o File.Exists método é chamado para verificar se um arquivo com o mesmo nome já existe no caminho. Se isso acontecer, o nome do arquivo a ser carregado será prefixado com um número antes que o SaveAs método seja chamado. Isso impede que o arquivo existente seja substituído.
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>FileUpload.SaveAs Method Example</title>
<script runat="server">
protected void UploadButton_Click(object sender, EventArgs e)
{
// Before attempting to save the file, verify
// that the FileUpload control contains a file.
if (FileUpload1.HasFile)
// Call a helper method routine to save the file.
SaveFile(FileUpload1.PostedFile);
else
// Notify the user that a file was not uploaded.
UploadStatusLabel.Text = "You did not specify a file to upload.";
}
void SaveFile(HttpPostedFile file)
{
// Specify the path to save the uploaded file to.
string savePath = "c:\\temp\\uploads\\";
// Get the name of the file to upload.
string fileName = FileUpload1.FileName;
// Create the path and file name to check for duplicates.
string pathToCheck = savePath + fileName;
// Create a temporary file name to use for checking duplicates.
string tempfileName = "";
// Check to see if a file already exists with the
// same name as the file to upload.
if (System.IO.File.Exists(pathToCheck))
{
int counter = 2;
while (System.IO.File.Exists(pathToCheck))
{
// if a file with this name already exists,
// prefix the filename with a number.
tempfileName = counter.ToString() + fileName;
pathToCheck = savePath + tempfileName;
counter ++;
}
fileName = tempfileName;
// Notify the user that the file name was changed.
UploadStatusLabel.Text = "A file with the same name already exists." +
"<br />Your file was saved as " + fileName;
}
else
{
// Notify the user that the file was saved successfully.
UploadStatusLabel.Text = "Your file was uploaded successfully.";
}
// Append the name of the file to upload to the path.
savePath += fileName;
// Call the SaveAs method to save the uploaded
// file to the specified directory.
FileUpload1.SaveAs(savePath);
}
</script>
</head>
<body>
<h3>FileUpload.SaveAs Method Example</h3>
<form id="Form1" runat="server">
<h4>Select a file to upload:</h4>
<asp:FileUpload id="FileUpload1"
runat="server">
</asp:FileUpload>
<br /><br />
<asp:Button id="UploadButton"
Text="Upload file"
OnClick="UploadButton_Click"
runat="server">
</asp:Button>
<hr />
<asp:Label id="UploadStatusLabel"
runat="server">
</asp:Label>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>FileUpload.SaveAs Method Example</title>
<script runat="server">
Sub UploadButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
' Before attempting to save the file, verify
' that the FileUpload control contains a file.
If (FileUpload1.HasFile) Then
' Call a helper method routine to save the file.
SaveFile(FileUpload1.PostedFile)
Else
' Notify the user that a file was not uploaded.
UploadStatusLabel.Text = "You did not specify a file to upload."
End If
End Sub
Sub SaveFile(ByVal file As HttpPostedFile)
' Specify the path to save the uploaded file to.
Dim savePath As String = "c:\temp\uploads\"
' Get the name of the file to upload.
Dim fileName As String = FileUpload1.FileName
' Create the path and file name to check for duplicates.
Dim pathToCheck As String = savePath + fileName
' Create a temporary file name to use for checking duplicates.
Dim tempfileName As String
' Check to see if a file already exists with the
' same name as the file to upload.
If (System.IO.File.Exists(pathToCheck)) Then
Dim counter As Integer = 2
While (System.IO.File.Exists(pathToCheck))
' If a file with this name already exists,
' prefix the filename with a number.
tempfileName = counter.ToString() + fileName
pathToCheck = savePath + tempfileName
counter = counter + 1
End While
fileName = tempfileName
' Notify the user that the file name was changed.
UploadStatusLabel.Text = "A file with the same name already exists." + "<br />" + _
"Your file was saved as " + fileName
Else
' Notify the user that the file was saved successfully.
UploadStatusLabel.Text = "Your file was uploaded successfully."
End If
' Append the name of the file to upload to the path.
savePath += fileName
' Call the SaveAs method to save the uploaded
' file to the specified directory.
FileUpload1.SaveAs(savePath)
End Sub
</script>
</head>
<body>
<h3>FileUpload.SaveAs Method Example</h3>
<form id="Form1" runat="server">
<h4>Select a file to upload:</h4>
<asp:FileUpload id="FileUpload1"
runat="server">
</asp:FileUpload>
<br /><br />
<asp:Button id="UploadButton"
Text="Upload file"
OnClick="UploadButton_Click"
runat="server">
</asp:Button>
<hr />
<asp:Label id="UploadStatusLabel"
runat="server">
</asp:Label>
</form>
</body>
</html>
Comentários
O SaveAs método salva o conteúdo de um arquivo carregado em um caminho especificado no servidor Web.
O FileUpload controle não salva automaticamente um arquivo no servidor depois que o usuário seleciona o arquivo a ser carregado. Você deve fornecer explicitamente um controle ou mecanismo para permitir que o usuário envie o arquivo especificado. Por exemplo, você pode fornecer um botão que o usuário clica para carregar o arquivo. O código que você escreve para salvar o arquivo especificado deve chamar o SaveAs método , que salva o conteúdo de um arquivo em um caminho especificado no servidor. Normalmente, o SaveAs método é chamado em um método de manipulação de eventos para um evento que gera uma postagem de volta ao servidor. Por exemplo, se você fornecer um botão para enviar um arquivo, o código para salvar o arquivo no servidor poderá ser incluído dentro do método de manipulação de eventos para o evento de clique.
Ao chamar o SaveAs método , você deve especificar o caminho completo do diretório no servidor no qual salvar o arquivo carregado. Se você não especificar explicitamente um caminho no código do aplicativo, uma exceção HttpException será gerada quando um usuário tentar carregar um arquivo. Esse comportamento ajuda a manter os arquivos no servidor seguros, não permitindo que os usuários especifiquem um caminho no qual salvar os arquivos carregados.
Antes de chamar o SaveAs método , você deve usar a HasFile propriedade para verificar se o FileUpload controle contém um arquivo a ser carregado. Se o HasFile retornar true
, chame o SaveAs método . Se retornar false
, exiba uma mensagem para o usuário indicando que o controle não contém um arquivo. Se você não fornecer código de tratamento de erros para verificar se um arquivo existe, uma tentativa de salvar um arquivo inexistente gerará uma exceção HttpException .
Para que uma chamada para o SaveAs funcione, o aplicativo ASP.NET deve ter acesso de gravação ao diretório no servidor. Há duas maneiras pelas quais o aplicativo pode obter acesso de gravação. Você pode conceder explicitamente acesso de gravação à conta na qual o aplicativo está em execução, no diretório no qual os arquivos carregados serão salvos. Como alternativa, você pode aumentar o nível de confiança concedido ao aplicativo ASP.NET. Para obter acesso de gravação ao diretório em execução para o aplicativo, o aplicativo deve receber o AspNetHostingPermission objeto com o nível de confiança definido como o AspNetHostingPermissionLevel.Medium valor. Aumentar o nível de confiança aumenta o acesso do aplicativo aos recursos no servidor. Observe que essa não é uma abordagem segura, pois um usuário mal-intencionado que obtém o controle do seu aplicativo também poderá ser executado sob esse nível mais alto de confiança. É uma prática recomendada executar um aplicativo ASP.NET no contexto de um usuário que tem os privilégios mínimos necessários para que o aplicativo seja executado. Para obter mais informações sobre segurança em aplicativos ASP.NET, consulte Práticas básicas de segurança para aplicativos Web e ASP.NET níveis de confiança e arquivos de política.