Ошибка при загрузке файла curl в .NET MultipartFileStreamProvider - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь загрузить файл в приложение .NET, используя cURL. Моя командная строка похожа на

curl -F "FormVar=@filename" http://...

Когда я это делаю, я получаю сообщение об ошибке, подобное этому:

System.IO.IOException: Error writing MIME multipart body part to output stream. 
---> System.InvalidOperationException: The stream provider of type 
'CustomMultipartFormDataStreamProvider' threw an exception. ---> 
System.InvalidOperationException: Could not determine a valid local file 
name for the multipart body part. 
---> System.ArgumentException: Illegal characters in path.
   at System.IO.Path.CheckInvalidPathChars(String path, Boolean 
checkAdditional)
   at System.IO.Path.GetFileName(String path)
   at System.Net.Http.MultipartFileStreamProvider.GetStream(HttpContent 
parent, HttpContentHeaders headers)

Я заметил, что curl заключает имя файла в кавычки в заголовке HTTP Content-Disposition:

Content-Disposition: form-data; name="FormVar"; filename="MyFilename.txt"

Если я перехватываю неработающий запрос в Fiddler, вручную удаляю кавычки вокруг MyFilename.txt и повторяю запрос, он

Как мне получить MultipartFileStreamProvider, чтобы не ломаться, если имя файла содержит кавычки?

Цитаты являются частью стандарта для заголовка Content-Disposition ; примечание «RFC 2616 допускает только« заключенную в кавычки »для параметра имени файла«

...