[Seaside] Re: What alternative for fileUpload with WAFile for large
van.upboy at gmail.com
Wed Mar 24 20:16:05 UTC 2010
Thanks for this information. My head is spinning right now ;-) but I will
look into it, and probably ask more questions if I understand this better.
Date: Wed, 24 Mar 2010 11:27:07 -0700
> From: John M McIntosh <johnmci at smalltalkconsulting.com>
> Subject: Re: [Seaside] What alternative for fileUpload with WAFile for
> large files?
> To: Seaside - general discussion <seaside at lists.squeakfoundation.org>
> <DEF8230A-9B70-4B4C-BEFC-E0D28BA0F6F9 at smalltalkconsulting.com>
> Content-Type: text/plain; charset="iso-8859-1"
> Ah, it shouldn't run out of memory.
> Wikiserver for the iPhone uses an older version of Pier and I and to make a
> few changes (which were fed back to the Pier folks) to ensure
> it could stream up/down 50MB files on a device within a 10 MB free memory
> However the support isn't quite turned on or accessible by default.
> You have to do
> WAKomEncoded default streamUploads: true.
> which then alters a decision to use
> The original email for this is below, but the implementation that was done
> by the Pier team is different.
> Ok in order to get streaming to work, so that I could upload and see a 58MB
> TIFF image on a remote browser from the iphone wikiserver but use no more
> than 30MB of memory I had do the following:
> Well turn it on: WAKom default streamUploads: true.
> MAFileUploadComponet>>upload: aFile
> "First this did contents: aFile contents which won't work with 800MB
> "Alter to execute a method that takes the aFile"
> self value: (aFile isNil ifFalse: [
> self description kind new
> mimetype: aFile contentType;
> filename: aFile fileName;
> contentsFromWATemporaryFilePRoxy: aFile;
> yourself ])
> The helper methods then do contentsFromWATemporaryFilePRoxy
> MAExternalFileModel>>contentsFromWATemporaryFilePRoxy: file
> | writeStream readStream |
> writeStream := self writeStream.
> readStream := file stream.
> filesize := readStream size.
> [FileDirectory default copyFile: readStream toFile: writeStream]
> [readStream close.
> writeStream close]
> MAFileModel>>contentsFromWATemporaryFilePRoxy: file
> self contents: file contents
> The next issue was the data coming back and in urlOn: it would super to
> MAFileModel which would do
> urlOn: html
> ^ html context
> urlForDocument: self contents
> mimeType: self mimetype
> fileName: self filename
> "Again self contents"
> I altered the subclass then to do:
> MAExternalFileModel>>urlOn: html
> ^ self baseUrl isNil
> ifTrue: [html context
> urlForDocument: self
> mimeType: self mimetype
> fileName: self filename]
> ifFalse: [ self baseUrl , '/' , (self location reduce: [ :a
> :b | a , '/' , b ]) , '/' , self filename ]
> Lastly we need to keep the logic from creating a mime document and caching
> the contents, rather
> we need to create a localfilemimedocment by doing
> MAExernalFileModel>>asMIMEDocumentType: mimeType
> ^self readStream asMIMEDocumentType: mimeType
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the seaside