[Seaside] 3.9 and encoding in multipart fields
Norbert Hartl
norbert at hartl.name
Thu Apr 26 17:38:10 UTC 2007
.
> 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)]
].
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?)
- 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
....
- converting from utf-8 when reading from the database
- 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).
Does anybody have any doubt about this approach?
Norbert
More information about the seaside
mailing list