none
Impossible de supprimer une image upload RRS feed

  • Question

  •  

    Bonjour,

    j'ai une image à upload, je modifie le nom de celle-ci et je l'uploade, mais pour une raison, quand je veux supprimer cette image dont j'ai modifiée le nom, j'ai le message Le processus ne peut pas accéder au fichier 'C:\ImagePass.jpg', car il est en cours d'utilisation par un autre processus.
    or je ne vois nul part où mon image est utilisée.
    pour la supprimer je fais File.Delete(monimage)
    mercredi 12 mars 2008 15:52

Toutes les réponses

  • Bonjour,

    J'ai du mal a saisir l'ensemble des actions qui se passe. Si je comprend bien :

    • l'utilisateur envoi via son navigateur une image au serveur.
    • Vous enregistrez ensuite cette image sur le serveur.
    • Vous changez ensuite son nom sur le serveur (ex : monImage.jpg -> maNouvelleImage.jpg). Est ce que vous changez juste son nom ou vous créez une nouvelle image avec un nom différent ?

    Si vous avez, comme je le pense vu votre message précedent, modifié l'image et sauvez dans un autre fichier, il faut appeler la méthode Dispose sur votre objet System.Drawing.Image pour libérer l'accès à la ressource. Puis vous pourrez la supprimer.

     

    Guillaume

    jeudi 13 mars 2008 08:40
  • Bonjour,

     

    je crée une nouvelle image avec un nom différent et c'est cette image que je veux supprimer après mon traitement,

    je fais bien un .Dispose() de l'objet System.Drawing.Image mais je n'arrive pas à la supprimer, même message  "il est en cours d'utilisation par un autre processus"

    jeudi 13 mars 2008 09:08
  • Bonjour,

    Voici un exemple de fonction qui marche dans mon test :

     

    Code Snippet

    Private Sub Transform(imageName As String)

     

    Dim imagePath As String = Server.MapPath(imageName)

    Dim newImagePath As String = Path.Combine( _

    Path.GetDirectoryName(imagePath) _

    , Path.GetFileNameWithoutExtension(imagePath) & "New" & ".jpg" _

    )

     

    ' charge l'image originale

    Using originalImage As Image = Image.FromFile(imagePath)

    ' crée un bitmap a partir de l'image original en changeant sa taille à 150 x 150

    Using newImage As Bitmap = New Bitmap(originalImage, New Size(150, 150)

    ' sauve la nouvelle image

    newImage.Save(newImagePath, ImageFormat.Jpeg)

    End Using

    End Using

     

    ' supprime l'image originale

    File.Delete(imagePath)

     

    ' supprime l'image trasnformée

    File.Delete(newImagePath)

     

    End Sub

     

     

    Guillaume

    jeudi 13 mars 2008 15:12
  • quand j'execute ma page où se trouve votre exemple j'ai ce message:

    'Image' est ambigu, importé des espaces de noms ou des types 'System.Web.UI.WebControls, System.Drawing'.
    sur la ligne Using originalImage As Image = Image.FromFile(imagePath)

    j'ai bien dans ma page <%@Import Namespace="System.Drawing"%>

    jeudi 13 mars 2008 16:20
  • Bonjour,

    Le message signifie que le compilateur n'arrive pas à décider si le type Image est System.Drawing.Image ou System.Web.UI.WebControls.Image.

    Remplacez dans le code le "As Image = New Image(" par "As System.Drawing.Image = New System.Drawing.Image(".

     

    Guillaume

    jeudi 13 mars 2008 16:30
  •  

    j'ai ce message d'erreur:

    Une erreur générique s'est produite dans GDI+.

    sur la ligne newImage.Save(newImagePath, originalImage.RawFormat)

    jeudi 13 mars 2008 17:12
  • Bonjour,

    Verifiez que le compte utilisateur à bien les droits de lecture/ecriture/suppression sur le répertoire.

     

    Guillaume

    jeudi 13 mars 2008 17:43
  •  

    bonjour,

    le compte utilisateur a bien les droits de lecture/ecriture/suppression sur le répertoire.

    vendredi 14 mars 2008 12:57
  • Bonjour,

    Vous avez bien vérifier le compte utilisateur sous lequel tourne IIS ? S'il a bien les droits j'avoue que je ne vois pas trop avec ce seul message.

     

    Guillaume

    vendredi 14 mars 2008 13:46