Avatar billede Slettet bruger
28. februar 2012 - 18:02 Der er 6 kommentarer og
1 løsning

upload fejl ved gem i db?

Denne kode resize og giver foto nyt navn, gemmer også i mappen upload, virker fint, men når jeg gemmer fotonavn i db, gemmes det oprindelige fotonavn, ikke det nye navn. Hvad har jeg gjort galt?

<%
nynavn=request("brugernavn")

function resize(sti,navn,nyX)
    Set objImg = Server.CreateObject("AspImage.Image")
        objImg.PadSize = 0
        objImg.LoadImage Server.MapPath(sti & navn)
        objImg.GetImageFileSize Server.MapPath(sti & navn), X, Y
   
        ResizedX = nyX
        objImg.MaxX = X
        objImg.MaxY = Y
       
        strNavn = nynavn

        if X > ResizedX then
            ResizedY = (ResizedX / objImg.MaxX) * objImg.MaxY
            objImg.ResizeR ResizedX, ResizedY
            objImg.FileName = (Server.MapPath(sti & strNavn))
            objImg.SaveImage
        end if
       
        Set objImg = Nothing
   
      ' Opretter objekt til sletning (FSO)
    Set FsoObj = Server.CreateObject("Scripting.FileSystemObject")
   
    ' Angiver sti til billede
    strSource = Server.Mappath(sti & navn)
   
    ' Tjekker om filen eksisterer
    If FsoObj.FileExists(strSource) Then
        FsoObj.DeleteFile(strSource) ' Sletter filen - hvis den eksisterer
    End if
   
    ' Rydder objekt
    Set FsoObj = Nothing
   
end function
%>

  <!--#include file="conn.asp"-->

<%

  Dim mySmartUpload
  Dim file1

Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

mySmartUpload.Upload
 
For each file1 In mySmartUpload.Files

If not file1.IsMissing Then

file1.SaveAs("/upload/" & file1.FileName)

call resize("/upload/",file1.FileName,100)

'gemmer i db
session("foto")=file1.FileName
     
SQL = "UPDATE bruger SET brugerfoto ='" & session("foto") & "' WHERE brugernavn='" & nynavn & "'"
Conn.Execute(SQL)
     
  End If
  Next
 
Response.Write(" filen er uploaded ")

%>
Avatar billede keysersoze Guru
28. februar 2012 - 19:03 #1
Fordi du sætter din session til at være lig med file1.FileName og ikke hvad du ellers måtte generere af navn.
Avatar billede Slettet bruger
28. februar 2012 - 19:21 #2
ja, det er rigtigt, det var også min fornemmelse. Men så kommer jeg i tvivl, for filnavnet som gemmes i mappe upload er jo korrekt, så skal jeg op i objmg.filename og hente navnet der, inden foto bliver upload?
Avatar billede keysersoze Guru
28. februar 2012 - 19:44 #3
Umiddelbart har du en masse rod i hvad variabler, sessions osv er og det gør det svært at gennemskue - så vidt jeg kan se bliver filnavn = nynavn = request("brugernavn") så du kan vel bare bruge den variabel hele vejen.
Avatar billede Slettet bruger
28. februar 2012 - 22:56 #4
jeg vil forsøge at løse rode og lade høre fra mig igen:-)
Avatar billede Slettet bruger
29. februar 2012 - 08:06 #5
Det er gået op for mig, at alle filer som bliver omdøbt får også ændret format fra f.eks. .jpeg til .jpg . Andre formater kan AspImage ikke klare, og derfor kan jeg nøjes med at lægge brugernavn i db under brugerfoto og tilføje .jpg. Så er den klaret, ikke optimalt, men problemet er løst. Keysoerzone, smid et svar, det var dit indlæg som førte mig til denne halve løsning.

min nye kode herunder, hvis andre kan bruge den.

<%

strNavn=request("brugernavn")

function resize(sti,navn,nyX)
    Set objImg = Server.CreateObject("AspImage.Image")
        objImg.PadSize = 0
        objImg.LoadImage Server.MapPath(sti & navn)
        objImg.GetImageFileSize Server.MapPath(sti & navn), X, Y
   
        ResizedX = nyX
        objImg.MaxX = X
        objImg.MaxY = Y
       
        if X > ResizedX then
            ResizedY = (ResizedX / objImg.MaxX) * objImg.MaxY
            objImg.ResizeR ResizedX, ResizedY
            objImg.FileName = (Server.MapPath(sti & strNavn))
            objImg.SaveImage
        end if
       
        'smider brugernavn i db og tilføjer .jpg
        SQL = "UPDATE bruger SET brugerfoto ='" &  strNavn & (".jpg")  & "' WHERE brugernavn='" & strnavn & "'"
        Conn.Execute(SQL)
       
        Set objImg = Nothing 
   
      ' Opretter objekt til sletning (FSO)
    Set FsoObj = Server.CreateObject("Scripting.FileSystemObject")
   
    ' Angiver sti til billede
    strSource = Server.Mappath(sti & navn)
   
   
    ' Tjekker om filen eksisterer
    If FsoObj.FileExists(strSource) Then
   
    FsoObj.DeleteFile(strSource) ' Sletter filen - hvis den eksisterer
    End if
   
    ' Rydder objekt
    Set FsoObj = Nothing
   
end function
%>

<%

  Dim mySmartUpload
  Dim file1

Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

mySmartUpload.Upload
 
For each file1 In mySmartUpload.Files

If not file1.IsMissing Then

file1.SaveAs("/upload/" & file1.FileName)

call resize("/upload/",file1.FileName,100)

     
  End If
  Next
 
Response.Write(" filen er uploaded ")

%>
Avatar billede keysersoze Guru
01. marts 2012 - 19:31 #6
Der er nogle licensbetingelser om i hvert fald nogle gif-formater men hvad aspimage totalt set understøtter skal jeg ikke gøre mig klog på. Men grunden til at aspimage omdøber dine filendelser er formentlig fordi du ikke selv sætter den på når du bestemmer filnavnet som du gør når du lægger den i databasen.
Avatar billede Slettet bruger
01. marts 2012 - 19:38 #7
det vil jeg kigge nærmere på, dette licens-halløj, men du skal i hvert fald have mange tak for hjælpen.
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
Kurser inden for grundlæggende programmering

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