« Return to Thread: Integrating Images on a website. Don't want to use Apache or WAFileLibrary.

Re: Integrating Images on a website. Don't want to use Apache or WAFileLibrary.

by Holger Kleinsorgen-3 :: Rate this Message:

Reply to Author | View in Thread

Martin Kobetic schrieb:
> The extension is rather trivial as you can see in the attached file-out.
> It should file into Squeak fine, although there might be some VW
> specific bits in it, so you may have to fix it up for it to actually
> work in Squeak.

Works with some minor tweaking, see attached fileout.

'From Squeak3.9 of 7 November 2006 [latest update: #7067] on 23 April 2008 at 9:41:54 pm'!
WAFileLibrary subclass: #WAExternalFileLibrary
        instanceVariableNames: ''
        classVariableNames: ''
        poolDictionaries: ''
        category: 'SeasideForOpentalk'!
!WAExternalFileLibrary commentStamp: '<historical>' prior: 0!
This class adds the ability to serve content from files external to the image.

The files go in to a subdirectory from the running directory called 'files'
The URL to access the files is: http://localhost:7777/seaside/files/external/myfile.png

Seaside protects against malicious users attempting to use '..' to access above the 'files' directory.!


!WAExternalFileLibrary methodsFor: 'accessing' stamp: 'hkl 4/23/2008 21:40'!
documentAt: aFilename ifAbsent: aBlock
       
        | fn files mimeType fileStream |
        files :=  FileDirectory default directoryNamed: 'files'.
        files exists ifFalse: [^aBlock value].
        fn := files fullNameFor: aFilename.
        ^(files fileOrDirectoryExists: fn)
                ifTrue:
                        [mimeType := self mimetypeForFile: aFilename.
                        fileStream := (files readOnlyFileNamed: fn) binary.
                        (WAStreamResponse on: fileStream)
                                contentType: (mimeType ifNil: ['application/octet-stream']);
                                headerAt: 'Expires' put: 'Thu, 01 Jan 2095 12:00:00 GMT';
                                yourself]
                ifFalse: [aBlock value]! !

!WAExternalFileLibrary methodsFor: 'accessing' stamp: ' 23/4/08 11:00'!
urlOf: aSymbol using: aHandler
       
        ^(aHandler baseUrl)
                addToPath: 'external';
                addToPath: (self asFilename: aSymbol);
                yourself! !

"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!

WAExternalFileLibrary class
        instanceVariableNames: ''!

!WAExternalFileLibrary class methodsFor: 'testing' stamp: ' 23/4/08 11:00'!
handlesFolder: aSymbol
       
        ^aSymbol = #external! !

_______________________________________________
seaside mailing list
seaside@...
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

 « Return to Thread: Integrating Images on a website. Don't want to use Apache or WAFileLibrary.