これをまとめる必要がありますが、方法がわかりません:-)
基本的に、私は jQuery フォームを使用してファイルを WCF REST サービスにアップロードしています。
クライアントは次のようになります。
<script type="text/javascript">
$(function () {
$('form').ajaxForm(
{
url: '/_vti_bin/VideoUploadService/VideoUploadService.svc/Upload/theFileName',
type: 'post'
})
});
</script>
<form id="fileUploadForm" name="fileUploadForm" method="post" action="/_vti_bin/VideoUploadService/VideoUploadService.svc/Upload" enctype="multipart/form-data">
<input type="text" name="filename" />
<input type="file" id="postedFile" name="postedFile" />
<input type="submit" id="fileUploadSubmit" value="Do Upload" />
</form>
サーバー関連のスニペットは
[WebInvoke(UriTemplate = "Upload/{fileName}", ResponseFormat = WebMessageFormat.Json)]
void Upload(string fileName, Stream fileStream);
public void Upload(string fileName, Stream stream)
{
// just write stream to disk...
}
問題は、ファイルの内容ではなく、ディスクに書き込む内容が次のようになることです (私の場合は「0123456789」)。
-----------------------------7dc7e131201ea
Content-Disposition: form-data; name="MSOWebPartPage_PostbackSource"
// bunch of same stuff here
-----------------------------7dc7e131201ea
Content-Disposition: form-data; name="filename"
fdfd
-----------------------------7dc7e131201ea
Content-Disposition: form-data; name="postedFile"; filename="C:\Inter\Garbage\dummy.txt"
Content-Type: text/plain
0123456789
-----------------------------7dc7e131201ea--
質問 - 上記のものを手動で解析し、アップロードされたファイルに対応する最後の部分を抽出する必要がありますか (エレガントではありません)? または、アップロードされたファイルのコンテンツだけをストリームに取得するために、属性、コンテンツタイプ、その他の設定を適用する方法はありますか?
あると思われますが、見逃しています...助けはありますか?
どうもありがとう!