Как удалить многочастный мусор из метода POST WCF? - PullRequest
0 голосов
/ 12 сентября 2018

У меня очень большой файл (только для потоковой передачи), и я хочу загрузить его в мою службу 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--

Как удалить эту ненужную вещь, состоящую из нескольких частей?Есть ли какая-нибудь обертка для потока, которая может читать этот формат?Как я должен это обрабатывать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...