AttachmentDataをパラメーターとして受け入れるasmxWebサービスを呼び出す必要があります。これには、base64Binaryタイプのメンバーがあります。
<s:complexType name="AttachmentData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FileName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="UploadedUserName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Attachment" type="s:base64Binary" />
</s:sequence>
</s:complexType>
添付ファイルのファイルの内容を次のように送信しています。
//read the file contents
byte[] buffer = null;
try {
FileInfo attachment = new FileInfo(filepath);
using (FileStream stream = attachment.OpenRead()) {
if (stream.Length > 0) {
buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);
}
}
}
catch {
buffer = null;
}
//create AttachmentData object
WebSrvc.AttachmentData att = new WebSrvc.AttachmentData();
att.FileName = fileName;
att.Attachment = buffer;
これはbase64Binaryを送信する正しい方法ですか?ファイルの内容をbase64にエンコードする必要がありますか、それともオンザフライで行いますか?上記のコードを使用して、Webサービスリクエストのサイズを不必要に肥大化させているかどうかを確認しようとしています。