FileUpload.SaveAs(String) Méthode

Définition

Enregistre le contenu d'un fichier téléchargé vers un chemin d'accès spécifié sur le serveur web.

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

Paramètres

filename
String

Chaîne qui spécifie le chemin d’accès complet de l’emplacement du serveur où enregistrer le fichier téléchargé.

Exceptions

filename n'est pas un chemin complet.

Exemples

L’exemple suivant montre comment créer un FileUpload contrôle qui effectue la vérification des erreurs. Avant l’enregistrement du fichier, la HasFile méthode est appelée pour vérifier qu’il existe un fichier à charger. En outre, la File.Exists méthode est appelée pour vérifier si un fichier portant le même nom existe déjà dans le chemin d’accès. Si c’est le cas, le nom du fichier à charger est précédé d’un nombre avant l’appel de la SaveAs méthode. Cela empêche le remplacement du fichier existant.

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

Remarques

La SaveAs méthode enregistre le contenu d’un fichier chargé dans un chemin d’accès spécifié sur le serveur Web.

Le FileUpload contrôle n’enregistre pas automatiquement un fichier sur le serveur une fois que l’utilisateur a sélectionné le fichier à charger. Vous devez fournir explicitement un contrôle ou un mécanisme pour permettre à l’utilisateur d’envoyer le fichier spécifié. Par exemple, vous pouvez fournir un bouton sur lequel l’utilisateur clique pour charger le fichier. Le code que vous écrivez pour enregistrer le fichier spécifié doit appeler la SaveAs méthode , qui enregistre le contenu d’un fichier dans un chemin d’accès spécifié sur le serveur. En règle générale, la SaveAs méthode est appelée dans une méthode de gestion des événements pour un événement qui déclenche une publication sur le serveur. Par exemple, si vous fournissez un bouton pour envoyer un fichier, le code permettant d’enregistrer le fichier sur le serveur peut ensuite être inclus dans la méthode de gestion des événements pour l’événement click.

Lorsque vous appelez la SaveAs méthode , vous devez spécifier le chemin d’accès complet du répertoire sur le serveur dans lequel enregistrer le fichier chargé. Si vous ne spécifiez pas explicitement de chemin d’accès dans le code de votre application, une HttpException exception est levée lorsqu’un utilisateur tente de charger un fichier. Ce comportement permet de sécuriser les fichiers sur le serveur, en ne permettant pas aux utilisateurs de spécifier un chemin d’accès dans lequel enregistrer les fichiers qu’ils téléchargent.

Avant d’appeler la SaveAs méthode, vous devez utiliser la HasFile propriété pour vérifier que le FileUpload contrôle contient un fichier à charger. Si retourne HasFiletrue, appelez la SaveAs méthode . S’il retourne false, affichez un message à l’utilisateur indiquant que le contrôle ne contient pas de fichier. Si vous ne fournissez pas de code de gestion des erreurs pour vérifier l’existence d’un fichier, une tentative d’enregistrement d’un fichier inexistant lève une HttpException exception.

Pour qu’un appel à fonctionne SaveAs , l’application ASP.NET doit avoir un accès en écriture au répertoire sur le serveur. L’application peut obtenir un accès en écriture de deux façons. Vous pouvez accorder explicitement l’accès en écriture au compte sous lequel l’application s’exécute, dans le répertoire dans lequel les fichiers chargés seront enregistrés. Vous pouvez également augmenter le niveau de confiance accordé à l’application ASP.NET. Pour obtenir l’accès en écriture au répertoire d’exécution de l’application, l’application doit recevoir l’objet AspNetHostingPermission avec le niveau de confiance défini sur la AspNetHostingPermissionLevel.Medium valeur . L’augmentation du niveau de confiance augmente l’accès de l’application aux ressources sur le serveur. Notez qu’il ne s’agit pas d’une approche sécurisée, car un utilisateur malveillant qui prend le contrôle de votre application pourra également s’exécuter sous ce niveau de confiance plus élevé. Il est recommandé d’exécuter une application ASP.NET dans le contexte d’un utilisateur disposant des privilèges minimum requis pour l’exécution de l’application. Pour plus d’informations sur la sécurité dans ASP.NET applications, consultez Pratiques de sécurité de base pour les applications web et ASP.NET niveaux de confiance et fichiers de stratégie.

S’applique à

Voir aussi