Sdílet prostřednictvím


FileUpload.SaveAs(String) Metoda

Definice

Uloží obsah nahraného souboru do zadané cesty na webovém serveru.

public:
 void SaveAs(System::String ^ filename);
public void SaveAs (string filename);
member this.SaveAs : string -> unit
Public Sub SaveAs (filename As String)

Parametry

filename
String

Řetězec, který určuje úplnou cestu k umístění serveru, na který se má nahraný soubor uložit.

Výjimky

filename není úplná cesta.

Příklady

Následující příklad ukazuje, jak vytvořit ovládací prvek FileUpload , který provádí kontrolu chyb. Před uložením souboru je volána metoda , HasFile aby se ověřilo, že soubor k nahrání existuje. Kromě toho je volána metoda ke kontrole, File.Exists zda soubor se stejným názvem již existuje v cestě. Pokud ano, název souboru, který se má nahrát, má před zavolání metody předponu SaveAs číslo. Tím zabráníte přepsání existujícího souboru.

<%@ 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>

Poznámky

Metoda SaveAs uloží obsah nahraného souboru do zadané cesty na webovém serveru.

Ovládací FileUpload prvek automaticky neuloží soubor na server poté, co uživatel vybere soubor k nahrání. Musíte explicitně zadat ovládací prvek nebo mechanismus, který uživateli umožní odeslat zadaný soubor. Můžete například zadat tlačítko, na které uživatel soubor nahraje kliknutím. Kód, který napíšete pro uložení zadaného souboru, by měl volat metodu SaveAs , která uloží obsah souboru do zadané cesty na serveru. Metoda SaveAs se obvykle volá v metodě zpracování událostí pro událost, která vyvolává příspěvek zpět na server. Pokud například zadáte tlačítko pro odeslání souboru, kód pro uložení souboru na server by pak mohl být součástí metody zpracování událostí události click.

Při volání SaveAs metody musíte zadat úplnou cestu k adresáři na serveru, do kterého se má nahraný soubor uložit. Pokud v kódu aplikace explicitně nezadáte cestu, HttpException vyvolá se při pokusu uživatele o nahrání souboru výjimka. Toto chování pomáhá udržovat soubory na serveru zabezpečené tím, že uživatelům neumožňuje zadat cestu, do které se mají soubory, které nahrají, uložit.

Před voláním SaveAs metody byste měli pomocí HasFile vlastnosti ověřit, že FileUpload ovládací prvek obsahuje soubor k nahrání. Pokud vrátí HasFiletrue, zavolejte metodu SaveAs . Pokud se vrátí false, zobrazí uživateli zprávu s oznámením, že ovládací prvek neobsahuje soubor. Pokud nezadáte kód pro zpracování chyb k ověření, že soubor existuje, vyvolá pokus o uložení neexistující souboru výjimku HttpException .

Aby volání SaveAs funkce fungovalo, musí mít aplikace ASP.NET oprávnění k zápisu do adresáře na serveru. Existují dva způsoby, jak může aplikace získat přístup k zápisu. Účtu, pod kterým je aplikace spuštěná, můžete explicitně udělit přístup k zápisu v adresáři, do kterého se budou nahrané soubory ukládat. Případně můžete zvýšit úroveň důvěryhodnosti, která je udělena aplikaci ASP.NET. Aby aplikace získala přístup k zápisu do prováděcího adresáře, musí být aplikace udělena AspNetHostingPermission objektu s úrovní důvěryhodnosti nastavenou AspNetHostingPermissionLevel.Medium na hodnotu . Zvýšením úrovně důvěryhodnosti se zvýší přístup aplikace k prostředkům na serveru. Upozorňujeme, že se nejedná o bezpečný přístup, protože uživatel se zlými úmysly, který získá kontrolu nad vaší aplikací, bude moct běžet i v rámci této vyšší úrovně důvěryhodnosti. Osvědčeným postupem je spustit aplikaci ASP.NET v kontextu uživatele, který má minimální oprávnění, která jsou potřebná ke spuštění aplikace. Další informace o zabezpečení ve ASP.NET aplikacích najdete v tématu Základní postupy zabezpečení pro webové aplikace a ASP.NET úrovně důvěryhodnosti a soubory zásad.

Platí pro

Viz také