0

投稿データを手動で作成する必要があるアプリケーションを作成しています。しかし、この投稿データには、画像のバイナリデータがあります。したがって、投稿する前の投稿データは次のようになります。

------------------------------8cc097679560ebc
Content-Disposition: form-data; name="mode";

test
------------------------------8cc097679560ebc
Content-Disposition: form-data; name="cropped";

false
------------------------------8cc097679560ebc
Content-Disposition: form-data; name="Image"; filename="C:\Temp\image_front1.jpg" Content-Type: application/octet-stream

…binary data…

ここにあるものはすべて、単純にを使用して構築されていますStringBuilder

私たちは多層アプリケーションを扱っています。これは、画像を変換Base64Stringして最終層に渡す方法です。

Dim image As Image = image.FromFile("samplecheck.jpg")
Dim stream As New System.IO.MemoryStream
image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg)
oDeposit.Image = Convert.ToBase64String(stream.ToArray())

これはうまく機能すると私は信じており、投稿データが構築されている最終層では次のようになります。

oPostData.Append(Encoding.ASCII.GetString(Convert.FromBase64String(ImageData)))

ご覧のとおり、これらすべてのバイナリ変換が原因でAPI固有のエラーが発生していると思いますが、これらの手順がすべて正しいことを確認する必要がありますContentTypeoctet-stream助言がありますか?

注:なぜ私がこのようにやっているのか不思議に思うかもしれませんが、それは彼らの愚かなAPIのせいであり、今はそれに従う必要があります。

4

1 に答える 1

1

コードにはいくつかの問題があります。

  1. StringBuilderバイナリデータの保存にを使用しないでください。生のバイトライターの1つを使用する必要があります。
  2. Convert.FromBase64Stringを返しますがbyte[]、ASCIIデータのバイト配列ではありません。したがって、あなたは電話するべきではありませんEncoding.ASCII.GetString

この他の質問を見て、正しいバイナリライターを使用してこのPOSTデータを構築する方法を確認してください。HTTPWebrequest(multipart / form-data)を使用してファイルをアップロードする

于 2012-10-02T21:11:52.203 に答える