[Seaside] 3.9 and encoding in multipart fields
Philippe Marschall
philippe.marschall at gmail.com
Thu Apr 26 21:17:03 UTC 2007
2007/4/26, Norbert Hartl <norbert at hartl.name>:
> .
> > Hmmm, it is still not working. I have two forms. One is only text fields
> > (multipart false) and one is text fields and input type="file"
> > (multipart true). I store the values in the database using Glorp.
> > I have two modifications to convert strings. One to utf8 when storing
> > in the database and one to convert from utf8 when reading from the
> > database.
> >
> > The multipart=false case leads to a proper store of the string in the
> > database. The multipart=true does not. Using WAKomEncoded39 the none
> > multipart case is displayed correctly. With WAKom the multipart case
> > is displayed correct.
> >
> > Examine the kom requests I can see that on multipart=false the strings
> > are displaying correct in the inspector. With multipart=true the
> > strings are looking strange (no conversion to the squeak encoding???)
> >
> > I don't know much about the multipart stuff. Are the single parts from
> > a multipart recognizable of which type they are (binary or text). I
> > would like to do a conversion if it is text. Do you have any hint where
> > in WAKom this encoding should occurr.
> >
> Ok, now I tested my theory. I added some code to WAKom to convert
> multipart fields to an internal representation.
>
> processMultipartFields: aRequest
> aRequest multipartFormFieldsDo:
> [:chunk |
> chunk explore.
> chunk fileName isEmptyOrNil ifFalse:
> [|stream file|
> stream := WriteStream on: String new.
> chunk saveToStream: stream.
> file := WAFile new
> fileName: chunk fileName;
> contents: stream contents;
> contentType: chunk contentType;
> yourself.
> aRequest postFields at: chunk fieldName put: file]
> ifTrue: [
> |stream|
> stream := WriteStream on: String new.
> chunk saveToStream: stream.
>
> aRequest postFields at: chunk fieldName put:( (stream contents)
> convertFromEncoding: #utf8)]
> ].
Do I see correctly that the #ifTrue: part ist new?
> That works for me now. It is slower than any other approach while
> doing:
>
> - getting UTF-8 from the client (is that always true or how does WAKom
> decide?)
WAKom does _nothing_ whatever the clients sends to you in whatever
encoding will be what you get.
> - converting multipart and none multipart fields from utf-8 to squeak
> - converting the string to utf-8 when storing in the database of the
> PostgresQL client encoding utf-8
Your job. Seaside does not know or care about databases.
> ....
> - converting from utf-8 when reading from the database
See above.
> - Using WAKomEncoded39 which encodes to utf-8 before sending to the
> client.
>
> It is much encoding but relatively clean (I think). I can use Umlauts
> in squeak code (being squeak encoding).
Yes, in Squeak >= 3.8 and WAKomEncoded(39)
Cheers
Philippe
> Does anybody have any doubt about this approach?
>
> Norbert
>
> _______________________________________________
> Seaside mailing list
> Seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
More information about the seaside
mailing list