Если я использую InputStream
для получения файла, например
HttpContext.Current.Request.InputStream
Как получить дополнительную информацию о файле?
Я могу легко преобразовать поток вphisical File, но, например, откуда мне знать, какое расширение файла используется ?
string fileIn = @"C:\Temp\inputStreamedFile.xxx"; // What extension?
using (FileStream fs = System.IO.File.Create(fileIn))
{
Stream f = HttpContext.Current.Request.InputStream;
byte[] bytes = new byte[f.Length];
f.Read(bytes, 0, (int)f.Length);
fs.Write(bytes, 0, bytes.Length);
}
Идея, лежащая в основе этого, заключается в том, что при использовании HttpPostedFileBase
я всегда получаю нулевое значение:
public ContentResult Send(HttpPostedFileBase fileToUpload, string email)
{
// Get file stream and save it
// Get File in stream
string fileIn = Path.Combine(uploadsPath, uniqueIdentifier),
fileOut = Path.Combine(convertedPath, uniqueIdentifier + ".pdf");
// Verify that the user selected a file
if (fileToUpload != null && fileToUpload.ContentLength > 0)
{
// extract only the fielname
string fileExtension = Path.GetExtension(fileToUpload.FileName);
fileIn = String.Concat(fileIn, fileExtension);
fileToUpload.SaveAs(fileIn);
}
// TODO: Add Convert File to Batch
return Content("File queued for process with id: " + uniqueIdentifier);
}
и это то, что я посылаю из командной строки:
$ curl --form email='mail@domain.com' --form fileToUpload='C:\temp\MyWord.docx' http://localhost:64705/send/
File queued for process with id: 1d777cc7-7c08-460c-8412-ddab72408123
переменная email
заполнена правильно, но fileToUpload
всегда равно нулю.
PS Этого не происходит , если я использую форму для загрузки тех же данных.