У меня очень большой файл (только для потоковой передачи), и я хочу загрузить его в мою службу REST WCF:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "upload?name={name}&tags={tags}&storage={storage}")]
UploadFileResponse UploadFile(string name, string tags, string storage, Stream file);
Вот как я делаю это с помощью RestSharp:
private void Upload(string filePath)
{
var name = Path.GetFileName(filePath);
var client = new RestClient(_endpoint);
client.Proxy = null;
var req = new RestRequest("upload", Method.POST);
req.AlwaysMultipartFormData = true;
req.AddQueryParameter("name", name);
if (_tags.Any())
{
req.AddQueryParameter("tags", string.Join(";", _tags));
}
req.AddQueryParameter("storage", _targetStorage);
//req.AddFile(name, filePath, "application/x-binary");
req.Files.Add(new FileParameter
{
Name = "file",
Writer = (s) =>
{
using (var stream = File.OpenRead(filePath))
{
stream.CopyTo(s);
}
},
FileName = name,
ContentLength = new FileInfo(filePath).Length,
});
var response = client.Execute<UploadFileResponse>(req);
response.ThrowIfError();
var result = response.Data;
}
И вот что я получаю из этого потока на моем сервере при отправке простого текстового файла:
-------------------------------28947758029299
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: application/octet-stream
tttttttttttttttt <==== this is text I sent
-------------------------------28947758029299--
Как удалить эту ненужную вещь, состоящую из нескольких частей?Есть ли какая-нибудь обертка для потока, которая может читать этот формат?Как я должен это обрабатывать?