FileUpload.SaveAs(String) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Slaat de inhoud van een geüpload bestand op naar een opgegeven pad op de webserver.
public:
void SaveAs(System::String ^ filename);
public void SaveAs(string filename);
member this.SaveAs : string -> unit
Public Sub SaveAs (filename As String)
Parameters
- filename
- String
Een tekenreeks die het volledige pad aangeeft van de locatie van de server waarop het geüploade bestand moet worden opgeslagen.
Uitzonderingen
filename is geen volledig pad.
Voorbeelden
In het volgende voorbeeld ziet u hoe u een FileUpload besturingselement maakt waarmee foutcontrole wordt uitgevoerd. Voordat het bestand wordt opgeslagen, wordt de HasFile methode aangeroepen om te controleren of er een bestand bestaat dat moet worden geüpload. Daarnaast wordt de File.Exists methode aangeroepen om te controleren of er al een bestand met dezelfde naam in het pad bestaat. Als dit het geval is, wordt de naam van het te uploaden bestand voorafgegaan door een getal voordat de SaveAs methode wordt aangeroepen. Hiermee voorkomt u dat het bestaande bestand wordt overschreven.
<%@ 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>
Opmerkingen
Met SaveAs de methode wordt de inhoud van een geüpload bestand opgeslagen in een opgegeven pad op de webserver.
Het FileUpload besturingselement slaat een bestand niet automatisch op de server op nadat de gebruiker het te uploaden bestand heeft geselecteerd. U moet expliciet een besturingselement of mechanisme opgeven waarmee de gebruiker het opgegeven bestand kan verzenden. U kunt bijvoorbeeld een knop opgeven waarop de gebruiker klikt om het bestand te uploaden. De code die u schrijft om het opgegeven bestand op te slaan, moet de SaveAs methode aanroepen, waardoor de inhoud van een bestand wordt opgeslagen in een opgegeven pad op de server. Normaal gesproken wordt de SaveAs methode aangeroepen in een gebeurtenisafhandelingsmethode voor een gebeurtenis die een postback naar de server genereert. Als u bijvoorbeeld een knop opgeeft om een bestand in te dienen, kan de code voor het opslaan van het bestand op de server worden opgenomen in de methode voor gebeurtenisafhandeling voor de klikgebeurtenis.
Wanneer u de SaveAs methode aanroept, moet u het volledige pad van de map opgeven op de server waarin het geüploade bestand moet worden opgeslagen. Als u niet expliciet een pad in uw toepassingscode opgeeft, wordt er een HttpException uitzondering gegenereerd wanneer een gebruiker probeert een bestand te uploaden. Dit gedrag helpt de bestanden op de server veilig te houden, door gebruikers niet toe te staan een pad op te geven waarin de bestanden moeten worden opgeslagen die ze uploaden.
Voordat u de SaveAs methode aanroept, moet u de HasFile eigenschap gebruiken om te controleren of het FileUpload besturingselement een bestand bevat dat moet worden geüpload. Als de HasFile retourneert true, roept u de methode aan SaveAs . Als dit wordt geretourneerd false, geeft u een bericht weer aan de gebruiker die aangeeft dat het besturingselement geen bestand bevat. Als u geen foutcode opgeeft om te controleren of er een bestand bestaat, genereert een poging om een niet-bestaand bestand op te slaan een HttpException uitzondering.
Voor een aanroep van de SaveAs moet de ASP.NET-toepassing schrijftoegang hebben tot de map op de server. Er zijn twee manieren waarop de toepassing schrijftoegang kan krijgen. U kunt schrijftoegang expliciet verlenen aan het account waaronder de toepassing wordt uitgevoerd, in de map waarin de geüploade bestanden worden opgeslagen. U kunt ook het vertrouwensniveau verhogen dat wordt verleend aan de ASP.NET-toepassing. Als u schrijftoegang wilt krijgen tot de uitvoermap voor de toepassing, moet aan de toepassing het AspNetHostingPermission object worden verleend, waarbij het vertrouwensniveau is ingesteld op de AspNetHostingPermissionLevel.Medium waarde. Het verhogen van het vertrouwensniveau verhoogt de toegang van de toepassing tot resources op de server. Houd er rekening mee dat dit geen veilige benadering is, omdat een kwaadwillende gebruiker die de controle over uw toepassing krijgt, ook kan worden uitgevoerd onder dit hogere vertrouwensniveau. Het is een best practice om een ASP.NET toepassing uit te voeren in de context van een gebruiker met de minimale bevoegdheden die nodig zijn om de toepassing uit te voeren. Zie Basic Security Practices for Web Applications and ASP.NET Trust Levels and Policy Files voor meer informatie over beveiliging in ASP.NET toepassingen.