我的网络服务器在Schala使用Twitter s Finagle图书馆书写,而后者则依靠Netty。 因此,请求内容作为动态的ChannelBuffer归还。 如果我把图像从终端站上载到服务器,就如:
curl -T "abc.jpg" http://127.0.0.1:8080/test/image
然后,我可以读一下,把图像传给一个支持的网络服务器,使用一个SAP包,看上去:
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthHeader xmlns="http://www.testtesttest.co.za/">
<LogonID>testtesttest</LogonID>
<Password>testtesttest</Password>
</AuthHeader>
</soap:Header>
<soap:Body>
<uploadFile xmlns="http://www.testtesttest.co.za/">
<FileDetails>
<FileName>image.jpg</FileName>
<FileContents>
{(Base64.encode(request.getContent())).toString(UTF_8)
</FileContents>
</FileDetails>
</uploadFile>
</soap:Body>
</soap:Envelope>
在上述例子中,该代码:(Base64.encode(request.getContent()))。toString(UTF_8)
将申请内容转换为第64条编码说明。
问题在于,我需要阅读从移动电话发送的多端Http申请中得出的图像内容。 TelephoneGap给我别无选择,只能寄送图像,并坚持作为多部分要求进行文件上载。
To break the multipart request apart, I change the request.getContent() result into a string using toString(UTF_8), and then getting the image data part by splitting the http multipart message into it s separate chunks:
var requestParts = request.content.toString(UTF_8).split("\Q--*****org.apache.cordova.formBoundary\E")
val imageParts = requestParts(3).split("\n\s*\n")
val imageHeader = imageParts(0)
val imageBody = imageParts(1)
我知道,这是令人不安的,但现在却看不到。 如今,图像具有显示图像的内容。
Now, if I put the imageBody back into the SOAP packet, I have to encode it again using:
val encoder = new BASE64Encoder();
val encodedImage = encoder.encode(imageBody)
此时此刻,形象只是空洞的。 它的规模看上去是正确的,但我说的是,大刀阔.的转换或编码。 例如,Im使用Netty s encoder,但第二种情况是Im使用标准java encoder。 原因是,Netty s encoder只能装上海峡牌照的物体。
我不想这样说太大了,但我今天一直在为此而努力。 这里的任何帮助都将受到全球教育研究基金会的赞赏。