C'est ainsi que je le fais. Les choses dont vous avez besoin est un dossier nommé "Uploads". Tout le reste est fait automatiquement.
D'abord, lorsqu'un utilisateur ouvre la page sur laquelle le téléchargement est effectué sur un LoadLoad, je fais ce qui suit pour m'assurer que le dossier de l'utilisateur authentifié est créé.
Protected Sub Page_Load (ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If My.User.IsAuthenticated Then
Try
If Not Page.IsPostBack Then
Select Case My.Computer.FileSystem.DirectoryExists (Server.MapPath ("~/Uploads"))
Case False
My.Computer.FileSystem.CreateDirectory (Server.MapPath ("~/Uploads"))
End Select
Select Case My.Computer.FileSystem.DirectoryExists (Server.MapPath ("~/Uploads/" & My.User.Name))
Case False
My.Computer.FileSystem.CreateDirectory (Server.MapPath ("~/Uploads/" & My.User.Name))
End Select
ListMyFiles()
End If
Catch ex As Exception
'Some code for catching exceptions
End Try
Else
Response.Redirect ("YOUR LOGIN PAGE")
End If
End Sub
Puis sur la page j'ai déjà ajouté un contrôle ASP: FileUpload. Sur la eveent Click de ce contrôle j'ajouter ce code
Try
Select Case FileUpload1.HasFile
Case True
Dim fname = FileUpload1.PostedFile.FileName
SaveFile(FileUpload1.PostedFile)
ListMyFiles()
Case False
Fupload.Text = "Please select a file for uploading!"
End Select
Catch ex As Exception
'Some code for catching exceptions
End Try
La fonction SaveFile a le code suivant
Sub SaveFile (ByVal file As HttpPostedFile)
Try
Dim _
filext = _
Split (FileUpload1.PostedFile.FileName, ".") (_
Split (FileUpload1.PostedFile.FileName, ".").Length - _
1)
Select Case filext
Case "txt"
Dim foldername = "~/Uploads/" & My.User.Name
Dim filename = foldername & "/Uploaded_" & FileUpload1.FileName
Dim savePath As String = "~/Uploads/" & My.User.Name
Dim pathToSave As String = Server.MapPath (filename)
Select Case IO.File.Exists (pathToSave)
Case False
FileUpload1.SaveAs (pathToSave)
Dim uploadedFile = My.Computer.FileSystem.ReadAllText ((pathToSave))
uploadedFile = uploadedFile
My.Computer.FileSystem.WriteAllText (pathToSave, uploadedFile, False)
Dim msg As String = "Your file was uploaded successfully."
Fupload.Text = msg
Case True
Dim _
msg As String = _
"You have already uploaded this file. Please delete the file from server first and then try to upload it again."
Fupload.Text = msg
End Select
Case Else
Dim _
msg As String = "The file type '" & filext & _
"' you are trying to upload is not allowed. You can only upload '.txt' files."
Fupload.Text = msg
End Select
Catch ex As Exception
'Some code for catching exceptions
End Try
End Sub
et les fonctions de ListMyFiles a le code suivant.
Protected Sub ListMyFiles()
Try
Dim foldername = "~/Uploads/" & My.User.Name
Dim files As New List(Of MyFiles)
For Each s As String In My.Computer.FileSystem.GetFiles (Server.MapPath (foldername) & "\")
Dim f As New MyFiles
f.Filename = Split (s, "\") (Split (s, "\").Length - 1)
f.CompletePath = s
f.FileSize = My.Computer.FileSystem.GetFileInfo (s).Length
files.Add (f)
Next
ListFiles.DataSource = files
ListFiles.DataBind()
Catch ex As Exception
'Some code for catching exceptions
End Try
End Sub
J'espère avoir résolu votre problème. Je sais que vous pourriez modifier le code, mais cela a fait le travail pour moi. Vous pouvez utiliser un autre moyen en stockant les fichiers en tant que binaires sur votre base de données, mais je choisis de le faire de cette façon, car c'est plus simple.
Et qu'est-ce qui est (fonctionne) le 'Serveur'? –