Avatar billede yalayala Nybegynder
19. december 2008 - 10:48 Der er 18 kommentarer

Bliver brugt af en anden proces, når jeg vil slette Fil ?

Hej Folkens :P

Har lavet en upload og thumbnails function, hvor den sletter original filen efter thumbnail'en er lavet men får så nedestående fejl.

Tak :D

koder VB

Processen kan ikke få adgang til filen 'C:\Visual Studio 2008\xxxxxxxxx\xxxxx\xxxxxxx\xxxxxxxx.jpg', fordi den bliver brugt af en anden proces.

Her er mine fuctioner:

Thumbnail________________________________________________

    Sub GenerateImageMedium(ByVal strFilepath As String, ByVal strFileName As String, ByVal newHeight As Integer)

        Dim bm As Bitmap = System.Drawing.Image.FromFile(strFilepath & strFileName.Replace(" ", "_").Replace("å", "aa").Replace("æ", "ae").Replace("ø", "oe").Replace("-", "_"))

        Dim newWidth As Integer = (newHeight / bm.Height) * bm.Width

        Dim resized As Bitmap = New Bitmap(newWidth, newHeight)

        Dim g As Graphics = Graphics.FromImage(resized)

        g.InterpolationMode = InterpolationMode.HighQualityBicubic
        g.SmoothingMode = SmoothingMode.HighQuality
        g.PixelOffsetMode = PixelOffsetMode.HighQuality
        g.CompositingQuality = CompositingQuality.HighQuality


        g.DrawImage(bm, New Rectangle(0, 0, resized.Width, resized.Height), 0, 0, bm.Width, bm.Height, GraphicsUnit.Pixel)


        Dim StrNewFilePath As String = strFilepath & "Thumbs\"

        g.Dispose()

        Dim newStrFileName As String = StrNewFilePath & "ThumbMedium_" & strFileName

        resized.Save(newStrFileName, ImageFormat.Jpeg)

        Dim DeleteFil As String = strFilepath & strFileName



        System.IO.File.Delete(DeleteFil)

Upload________________________________________________

Function UploadFil(ByVal fileUpload1 As System.Web.HttpPostedFile, ByVal OutputPath As String) As String

        If Not (fileUpload1 Is Nothing) Then
            If File.Exists(fileUpload1.FileName) Then
                Dim filename As String = Path.GetFileNameWithoutExtension(fileUpload1.FileName)
                Dim counter As Integer = 0
                Dim strFileName As String = String.Empty

                While (True)

                    counter += 1
                    strFileName = filename & "_" & counter.ToString() + Path.GetExtension(fileUpload1.FileName)
                    If File.Exists(OutputPath & strFileName) = False Then
                        Exit While
                    End If

                End While

                strFileName = Replace(strFileName, "-", "_")
                strFileName = Replace(strFileName, " ", "_")
                strFileName = Replace(strFileName, "æ", "ae")
                strFileName = Replace(strFileName, "ø", "oe")
                strFileName = Replace(strFileName, "å", "aa")


                fileUpload1.SaveAs(OutputPath & strFileName)
                Return strFileName


            End If
        End If


        Return False



    End Function
Avatar billede aaberg Nybegynder
19. december 2008 - 10:57 #1
Hvorfor gemmer du filen først? Det er jo fuldstændigt unødvendigt, når den alligevel skal slettes igen. Du kan loade et Bitmap object direkte fra en FileUpload kontrol.

Bitmap theImage = new Bitmap(fileUpload1.FileContent);
Avatar billede aaberg Nybegynder
19. december 2008 - 10:59 #2
Så slipper du også alt det bøvl med at finde nyt navn til filen, og fjerne nordiske tegn, osv.
Avatar billede yalayala Nybegynder
19. december 2008 - 11:28 #3
Sletter fileUpload1.SaveAs(OutputPath & strFileName) men hvordan får jeg så min Thumbnail funktion til at tage den uploade fil ud fra fileUpload1 ?

Ved ikke lige hvordan jeg skal bruge: "Bitmap theImage = new Bitmap(fileUpload1.FileContent);"

tak for hurtig svar
Avatar billede yalayala Nybegynder
19. december 2008 - 11:39 #4
Aye mester har fundet ud af det ;D super!

Brugte Dim bm As Bitmap = System.Drawing.Image.FromFile(fileUpload1.FileName)

og slettede fileUpload1.SaveAs(OutputPath & strFileName)

Men ang. kvaliteten af thumbnails, kan du hjælpe mig med at få lagt effekten "sharpen" på billederne ?
Avatar billede aaberg Nybegynder
19. december 2008 - 12:09 #5
Beklager, at jeg skrev det med C#. Jeg blev lidt for ivrigt. Det skal selvfølgelig være.

Dim bm As Bitmap = System.Drawing.Image.FromFile(fileUpload1.FileContent)

Med hensyn til kvaliteten, så er det InterpolationMode propertien du skal bruge. SmoothingMode har ingen effekt når du tegner billeder, da det er en effekt på vektorgrafik. Jeg er ikke helt sikker på, hvilken effekt PixelOffsetMode propertien har. Jeg tror ikke den betyder så meget, når du gør billeder mindre.

Prøv at eksperimentere mde InterpolationMode propertien.
Avatar billede yalayala Nybegynder
19. februar 2009 - 15:08 #6
Hej aaberg_cc ;P

Har problemer med at lave thumbnails ud af billeder på over ca. 300kb og at slette dem bagefter pga. filen bruges af en anden proces ?

Ville være fedt, hvis du ville kikke på det :)




Fejl ved slet
----------------------

[IOException: The process cannot access the file 'd:\web\lundoconsulting.dk\www\Images\CD_Design_4.jpg' because it is being used by another process.]
  System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +7712640
  System.IO.File.Delete(String path) +7572872
  Admin_DMMD.Page_Load(Object sender, EventArgs e) +704
  System.Web.UI.Control.OnLoad(EventArgs e) +99
  System.Web.UI.Control.LoadRecursive() +50
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627



Thumbnails function
----------------------


    Sub GenerateImageLow(ByVal strFilepath As String, ByVal strFilename As String, ByVal newHeight As Integer)


        Dim bm As Bitmap = System.Drawing.Image.FromFile(strFilepath & strFilename.Replace(" ", "_").Replace("å", "aa").Replace("æ", "ae").Replace("ø", "oe").Replace("-", "_"))

        Dim newWidth As Integer = (newHeight / bm.Height) * bm.Width

        Dim resized As Bitmap = New Bitmap(newWidth, newHeight)

        Dim g As Graphics = Graphics.FromImage(resized)

        g.InterpolationMode = InterpolationMode.HighQualityBicubic
        g.PixelOffsetMode = PixelOffsetMode.HighQuality
        g.CompositingQuality = CompositingQuality.HighQuality


        g.DrawImage(bm, New Rectangle(0, 0, resized.Width, resized.Height), 0, 0, bm.Width, bm.Height, GraphicsUnit.Pixel)


        Dim StrNewFilePath As String = strFilepath & "Thumbs\"



        Dim newStrFilename As String = StrNewFilePath & "ThumbLow_" & strFilename

        resized.Save(newStrFilename, ImageFormat.Jpeg)

        resized.Dispose()


    End Sub
Avatar billede aaberg Nybegynder
19. februar 2009 - 15:34 #7
Jeg kan ikke ud fra denne Sub alene se, hvad der er galt. Har du mulighed for at lave et lille test-projekt, hvor fejlen opstår, og sende den til "exp snabel-a aaberg punktum cc"? sÅ skal jeg se om jeg kan finde fejlen.
Avatar billede yalayala Nybegynder
20. februar 2009 - 15:16 #8
Her er filen også: http://rapidshare.com/files/200376696/TestUpload.rar

God weekend ;P
Avatar billede aaberg Nybegynder
23. februar 2009 - 10:47 #9
Jeg tror du glemte at vedlægge filen på den e-mail du sendte. Men jeg downloader den bare fra rapidshare :-)

Jeg tror jeg skal finde tid til at se på det i løbet af dagen :-)
Avatar billede yalayala Nybegynder
23. februar 2009 - 12:06 #10
Gik lidt for stærk med mailen.

- Super du gider se på det mester :D
Avatar billede yalayala Nybegynder
25. februar 2009 - 13:18 #11
Hej aaberg_cc

Har du fået kikket på det ;D
Avatar billede aaberg Nybegynder
25. februar 2009 - 13:46 #12
Ja, lidt. Men jeg er ikke kommet til en konklusion endnu. Jeg tænkte at jeg skulle prøve at uploade det til mit webhotel, for at se hvordan det kører der. Jeg ser ikke noget i koden der burde give den fejl du beskriver, og det virker jo også fint lokalt.

Det eneste jeg kan komme i tanke om, er at det kan være et rettighedsproblem på serveren.

Men jeg skal vende tilbage efter jeg har prøvet at køre det på webhotellet.
Avatar billede yalayala Nybegynder
26. februar 2009 - 08:13 #13
Har haft en del problemer med at curanet ikke rigtig gør de ting jeg beder dem om, som fx. jeg opretter domain med webhotel og så redirecter den til en gammel server og ikke den nye og at jeg ikke har skrive rettighedder i min egen mappe på serveren med det samme.

Hvis det virker på din server, må jeg lige have en snak med Curanets support igen igen ;P

Har lige fundet ud af det er lidt random hvornår den løber ud for memory på serveren, fordi nu kunne jeg godt uploade en fil på 1800kb ;S .. Men får så stadig den her fejl når jeg vil slette den lige bagefter: The process cannot access the file 'd:\web\lundoconsulting.dk\www\Images\Torn_1.jpg' because it is being used by another process.
Avatar billede aaberg Nybegynder
26. februar 2009 - 22:17 #14
Nu har jeg prøvet at køre det på mit webhotel, og der ser det ud til at virke helt fint.

At du får en fejl når du prøver at slette filen lige efter den er blevet oprettet, kan være fordi styresystemet ikke har givet slip på filen. Det kan også være en virusscanner der ikke er færdig med at scanne filen.

Men uanset, så lyder det som en forkert fremgangsmåde, at oprette en fil, for derefter at slette den igen. Det kan være du burde bruge en generic handler i stedet for. Hvad er det egentlig præcist du prøver at gøre?
Avatar billede yalayala Nybegynder
27. februar 2009 - 15:12 #15
Jamen det er når jeg har uploadet et billede og så vil slette den inde i Mit CMS lige bagefter, fordi jeg måske ikke skulle uplaode lige det billede.

generic handler ?

Tak fordi du ville teste det ;D
Avatar billede aaberg Nybegynder
27. februar 2009 - 21:19 #16
Nu forstår jeg. Nej, så skal du ikke bruge en generic handler.

Hvis du har adgang til en database, kan du eventuelt overveje at gemme billederne der i stedet for på filsystemet. Dette vil fjerne denne slags problemer.
Avatar billede yalayala Nybegynder
03. marts 2009 - 17:13 #17
Takker ;D

Lige en sidst ;b

Er igang med denne her menu:
http://www.javascriptkit.com/script/script2/verticalmenu.shtml

Hvor selve de submenuer der pubber ud til højre ikke vil overlappe det div tag jeg har ved siden af ?

har rodet med display på det div tag den ikke vil overlappe, men uden held.

På forhånd tak :)
Avatar billede aaberg Nybegynder
03. marts 2009 - 20:50 #18
Uh, der kommer vi lidt uden for det jeg er god til. Jeg har aldrig været en ørn til javascript og css. Her tror jeg du vil få mere hjælp ved at spørge i "(D)HTML" kategorien.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester