Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Upload fichier

7 réponses
Avatar
perceval
Voila mon problème... dès que je télécharge un fichier par ce bout de
code... si je veux l'éffacer tout de suite après... il dis que les
ressources sont utiliser par un autre processus... j'ai essayer de
mettre des dispose mais rien y fait...

quelqu'un pourrait regarder ?

sSavePath = "..\medias\" & Session("photoCandidate") & "\photos\"


If Not (filUpload.PostedFile Is Nothing) Then
' Check file size (mustn?t be 0)
Dim myFile As HttpPostedFile = filUpload.PostedFile


'Vérification si le fichier a été uploader
If myFile.ContentLength = 0 Then
ResultMsg.Text = "Aucun fichier sélectionné."
Return
End If

Dim type As String

'Vérification du type de fichier
Select Case myFile.ContentType.ToLower
Case "image/pjpeg", "image/jpeg", "image/gif",
"image/png"

Dim strFilename As String() =
myFile.FileName.Split("\")
Try

myFile.SaveAs(Server.MapPath(sSavePath) &
strFilename(UBound(strFilename)))
filUpload.Dispose()

Response.Redirect("photos.aspx")

Catch ex As Exception
ResultMsg.Text = "Un problème est survenu."
End Try

Case Else 'pas de fichier média
ResultMsg.Text = "Ce fichier n'est pas une photo"
End Select

filUpload.Dispose()

End If

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

7 réponses

Avatar
VANNESTE Xavier
essaie de rajouter un gc.collect pour force le garbage a passer
"perceval" a écrit dans le message de
news:
Voila mon problème... dès que je télécharge un fichier par ce bout de
code... si je veux l'éffacer tout de suite après... il dis que les
ressources sont utiliser par un autre processus... j'ai essayer de
mettre des dispose mais rien y fait...

quelqu'un pourrait regarder ?

sSavePath = "..medias" & Session("photoCandidate") & "photos"


If Not (filUpload.PostedFile Is Nothing) Then
' Check file size (mustn?t be 0)
Dim myFile As HttpPostedFile = filUpload.PostedFile


'Vérification si le fichier a été uploader
If myFile.ContentLength = 0 Then
ResultMsg.Text = "Aucun fichier sélectionné."
Return
End If

Dim type As String

'Vérification du type de fichier
Select Case myFile.ContentType.ToLower
Case "image/pjpeg", "image/jpeg", "image/gif",
"image/png"

Dim strFilename As String() > myFile.FileName.Split("")
Try

myFile.SaveAs(Server.MapPath(sSavePath) &
strFilename(UBound(strFilename)))
filUpload.Dispose()

Response.Redirect("photos.aspx")

Catch ex As Exception
ResultMsg.Text = "Un problème est survenu."
End Try

Case Else 'pas de fichier média
ResultMsg.Text = "Ce fichier n'est pas une photo"
End Select

filUpload.Dispose()

End If

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com



Avatar
perceval
VANNESTE Xavier a formulé ce mercredi :
gc.collect



non désolé ca n'a pas marché toujours le meme problème...

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
Frederic Melantois
Bonjour,

Microsoft (et d'autres) recommande de laisser le garbage collector faire son
travail.
Il se peut que l'on soit obligé d'utiliser le Gc.Collect(n), notamment pour
des objets occupant beaucoup de mémoires (énormes Bitmap par exemple), mais
en règle général, il n'est pas nécessaire (et recommandé) de le faire.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt05.asp
voir les sections "Garbage Collection Guidelines" et "Garbage Collection
Explained"

Je pense que le code d'upload via la méthode
filUploadControl.PostedFile.SaveAs n'impacte pas sur l'accès au fichier.
Ce qui doit se passer, c'est que vous faîtes afficher votre image via votre
navigateur, que le serveur a donc accès au fichier image pour envoyer un
flux vers le client. C'est pourquoi lorsque vous voulez supprimer, il vous
indique qu'il y a un autre processus dessus.

Généralement, ce que l'on fait, c'est qu'on tente la suppression et si elle
échoue, on va stocker en base de données le chemin du fichier. Puis la nuit,
on planifie la suppression des fichiers.

Frédéric Mélantois


"VANNESTE Xavier" a écrit dans le message de
news:
essaie de rajouter un gc.collect pour force le garbage a passer
"perceval" a écrit dans le message de
news:
> Voila mon problème... dès que je télécharge un fichier par ce bout de
> code... si je veux l'éffacer tout de suite après... il dis que les
> ressources sont utiliser par un autre processus... j'ai essayer de
> mettre des dispose mais rien y fait...
>
> quelqu'un pourrait regarder ?
>
> sSavePath = "..medias" & Session("photoCandidate") & "photos"
>
>
> If Not (filUpload.PostedFile Is Nothing) Then
> ' Check file size (mustn?t be 0)
> Dim myFile As HttpPostedFile = filUpload.PostedFile
>
>
> 'Vérification si le fichier a été uploader
> If myFile.ContentLength = 0 Then
> ResultMsg.Text = "Aucun fichier sélectionné."
> Return
> End If
>
> Dim type As String
>
> 'Vérification du type de fichier
> Select Case myFile.ContentType.ToLower
> Case "image/pjpeg", "image/jpeg", "image/gif",
> "image/png"
>
> Dim strFilename As String() > > myFile.FileName.Split("")
> Try
>
> myFile.SaveAs(Server.MapPath(sSavePath) &
> strFilename(UBound(strFilename)))
> filUpload.Dispose()
>
> Response.Redirect("photos.aspx")
>
> Catch ex As Exception
> ResultMsg.Text = "Un problème est survenu."
> End Try
>
> Case Else 'pas de fichier média
> ResultMsg.Text = "Ce fichier n'est pas une photo"
> End Select
>
> filUpload.Dispose()
>
> End If
>
> --
> Ceci est une signature automatique de MesNews.
> Site : http://mesnews.no-ip.com
>




Avatar
perceval
je serai a peu près d'accord avec vous sauf que si je reviens sur la
meme page 20 minutes après par exemple et que j'affiche la photo (idem
qu'avant mais sans l'upload quelques secondes avant) je peux cette fois
ci l'effacer cette image... alors que je l'ai visible dans mon
navigateur...

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
perceval
d'ailleur n'y a t'il pas un moyen de savoir quel est le processus exact
qui est sur mon fichier ?

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
Julien Adam
Avec Process Explorer par exemple ?
(http://www.sysinternals.com/ntw2k/freeware/procexp.shtml)

Julien Adam

"perceval" wrote in message
news:
d'ailleur n'y a t'il pas un moyen de savoir quel est le processus exact
qui est sur mon fichier ?

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com



Avatar
Patrice
L'image est probalement tirée du cache du navigateur.

IIS verrouille les fichiers accédés via HTTP, je crois par défaut pendant 1
mn (je ne retrouve pas l'article).

Une autre solution serait sans doute d'envoyer le fichier vers le navigateur
au travers d'une page ASPX (Response.WriteFile). Comme il n'est du coup plus
accédé via HTTP, il ne devrait plus être verrouillé par IIS et pourrait donc
être supprimé dans la foulée.

(bien que pour l'instant je ne saisisse pas pourquoi le supprimer alors que
l'on vient de l'uploader).

Patrice

--

"perceval" a écrit dans le message de
news:
je serai a peu près d'accord avec vous sauf que si je reviens sur la
meme page 20 minutes après par exemple et que j'affiche la photo (idem
qu'avant mais sans l'upload quelques secondes avant) je peux cette fois
ci l'effacer cette image... alors que je l'ai visible dans mon
navigateur...

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com