Я пытаюсь загрузить файл в приложение .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 допускает только« заключенную в кавычки »для параметра имени файла«