Avatar billede Slettet bruger
03. august 2002 - 09:19 Der er 21 kommentarer og
3 løsninger

cache igen igen

Hej...

Jeg har lavet en brugerdel hvor brugerne kan uploade et billede af dem selv. Problemet består i, at hvis vedkommende ønsker at uploade et nyt billede så ser det ikke ud til at billedet er opdateret (det gamle ligger i cachen indtil man prøver med "åben i nyt vindue", ctrl-F5 osv.)

Jeg har prøvet med <META HTTP-EQUIV="" CONTENT="no-cache"> men det virker ikke. Kan man ikke på en eller anden måde sikre sig at det er det NYE billede man henter?

PS - er opbygget i frameset, ved ikke om det har noget at sige.
Avatar billede steen Nybegynder
03. august 2002 - 10:31 #1
Lytter lige lidt med ;-) har samme problem, og det var ikke i et frameset, så det giver ingen forskel... Jeg løste det på en "klam" måde: la en response.redirect til si selv lige efter billedet er uploadet og skal vises.

/Steen
Avatar billede Slettet bruger
03. august 2002 - 11:05 #2
Hvad gjorde du, siger du? Forstår ikke helt hvad det er du har gjort :-)

PS - hørt noget mht. http://www.eksperten.dk/spm/241915 ?
Avatar billede pelkjaer Nybegynder
03. august 2002 - 11:10 #3
<%
Response.Expires=-1000
Response.CacheControl="no-cache"
%>
Avatar billede a1a1 Novice
03. august 2002 - 11:10 #4
i toppen af din asp fil har du der

Response.Expires = -1442

? hvis ikke så prøv at sætte det ind
Avatar billede a1a1 Novice
03. august 2002 - 11:13 #5
du kan også prøve at indsætte dette (også i toppen)

Response.AppendHeader("O.K.", "22O")

skulle fortælle browseren at siden ikke er "helt god" (status 200 er normal / OK), og derfor tvinge browseren til at revalidere hele indholdet (at læse det hele ind hvergang )

;)
Avatar billede Slettet bruger
03. august 2002 - 11:16 #6
pelkjaer > samme resultat. Viser det gamle billede indtil man rammer ctrl-F5

a1 > Response.AppendHeader("O.K.", "22O") medfører fejl
Avatar billede Slettet bruger
03. august 2002 - 11:20 #7
Det er sgu lidt sjovt for hvis man åbner siden hvor billedet skal vises i et nyt vindue (højreklik -> Åbn i et nyt vindue) vises det rigtige/nye billede. Det er som om der sker noget hvis man åbner i et nyt vinduet!?
Avatar billede pelkjaer Nybegynder
03. august 2002 - 11:21 #8
Kan du ikke bare lave en redirect side alá "dit billede er nu uploadet" :)
Avatar billede Slettet bruger
03. august 2002 - 11:23 #9
pelkjaer > tror det er det jeg gør. Formen "processes" på en anden side. Der står der så "dit billede er nu uploadet" - klikker man så tilbage til sin profil er det bare det gamle cachede billede man ser, eller er det ikke det du mener?
Avatar billede pelkjaer Nybegynder
03. august 2002 - 11:25 #10
Hvis du har et link på "er uploadet siden" stien tilbage til profilsiden, og *ikke* en history.go(-1) - er der da stadig problemer?
Avatar billede a1a1 Novice
03. august 2002 - 11:31 #11
det var også lidt forkert (asp.net)

Response.AddHeader "O.K.", "22O"

sådan så skulle det du :)
Avatar billede Slettet bruger
03. august 2002 - 11:40 #12
a1 > virker ikke ?!
Avatar billede Slettet bruger
03. august 2002 - 11:41 #13
pelkjaer > Hvis du har et link på "er uploadet siden" stien tilbage til profilsiden, og *ikke* en history.go(-1) - er der da stadig problemer?

Ja! Men ved Ctrl-F5 el. hvis jeg åbner siden i et nyt vindue - så er den ok!
Avatar billede pelkjaer Nybegynder
03. august 2002 - 11:44 #14
Det var sq' da underligt - det er sådan jeg gør på min upload side, og der vises de nye ok..
Avatar billede Slettet bruger
03. august 2002 - 11:45 #15
Måske er det fordi at billedet altid hedder <%=brugerid%>.jpg - dvs. at hvis bruger 12 uploader et nyt billede vil billedet stadigvæk hedde 12.jpg - og browseren så derfor er weird?!
Avatar billede a1a1 Novice
03. august 2002 - 11:45 #16
hmmm, det var da ærgeligt....:(
Avatar billede pelkjaer Nybegynder
03. august 2002 - 11:49 #17
Kan du så ikke lave en "delete before upload" ting.
Avatar billede Slettet bruger
03. august 2002 - 11:51 #18
pelkjaer > hmm,... altså sådan at brugeren FØRST skal ind og slette sit billede, derefter ind og uploade et nyt, eller mener du at ved upload slettes det oprindelige billede først og så uploades?

Ved sidstnævnte vil problemet garanteret være der endnu?! :-(
Avatar billede pelkjaer Nybegynder
03. august 2002 - 11:54 #19
Jeg mener sidstnævnte. Uden brugeren kan se der sker noget.

Sammen med cache control virker det måske.
Avatar billede pelkjaer Nybegynder
03. august 2002 - 12:00 #20
Noget alá:


Først skal vi have dette ind:

<%
Function newFileSystemObject()
set newFileSystemObject=Server.CreateObject("Scripting.FileSystemObject")
End Function
%>


<%
Function fileExists(aFileSpec)
fileExists=newFileSystemObject.fileExists(aFileSpec)
End Function
%>


og i dit "execute update" script

' her slettes filen inden upload
Set File = CreateObject("Scripting.FileSystemObject")
ImagePath = Server.MapPath("..\upload\")
ImagePath = ImagePath & "\" & (rsUpload.Fields.Item("billede").Value)
' check om filen eksisterer, gør den så slet den
If fileExists(ImagePath) Then
File.DeleteFile(ImagePath)
End If

Værd at prøve :)
Avatar billede Slettet bruger
03. august 2002 - 12:07 #21
ok, hardcore ;-)

Har smidt flg. kode ind: (mappen hvor billederne ligger hedder brugerpics, feltet i formen hedder FILE1, bruger i øvrigt AspSmartUpload)

Function newFileSystemObject()
set newFileSystemObject=Server.CreateObject("Scripting.FileSystemObject")
End Function

Function fileExists(aFileSpec)
fileExists=newFileSystemObject.fileExists(aFileSpec)
End Function

Set File = CreateObject("Scripting.FileSystemObject")
ImagePath = Server.MapPath("brugerpics")
ImagePath = ImagePath & "/" & (mySmartUpload.Fields.Item("FILE1").Value)
' check om filen eksisterer, gør den så slet den
If fileExists(ImagePath) Then
File.DeleteFile(ImagePath)
End If

---

Så får jeg desværre flg.:
Object required: ''

processing.asp, line 417

---

417 = ImagePath = ImagePath & "/" & (mySmartUpload.Fields.Item("FILE1").Value)
Avatar billede pelkjaer Nybegynder
03. august 2002 - 12:15 #22
Du skal indsætte det i dit update/slet statement

fx sådan

' execute slet/opdatér
Set editCmd = Server.CreateObject("ADODB.Command")
editCmd.ActiveConnection = editConnection

' her slettes filen inden upload
Set File = CreateObject("Scripting.FileSystemObject")
ImagePath = Server.MapPath("..\upload\")
ImagePath = ImagePath & "\" & (rsUpload.Fields.Item("billede").Value)

' check om filen eksisterer, gør den så slet den
If fileExists(ImagePath) Then
File.DeleteFile(ImagePath)
End If

editCmd.CommandText = editQuery
editCmd.Execute
editCmd.ActiveConnection.Close

Men jeg ved faktisk ikke om det virker sammen med AspSmartUpload.
Avatar billede Slettet bruger
03. august 2002 - 16:04 #23
Det vil ikke. Men jeg fiksede det ved at lave en pop-up der lige viste brugerens uploadede billede. På den måde virker det. Hvis jeg nu splitter pointene 3-ways er det vel fair.

Men tak for hjælpen.
Avatar billede pelkjaer Nybegynder
03. august 2002 - 16:07 #24
Tak for point.
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