C# - байтовые массивы и расширения файлов
У меня есть загруженный массив байтов, в котором отсутствует расширение файла. Мне нужно дать этому файлу расширение, которое в моем случае всегда будет.gif, и преобразовать обратно в байтовый массив.
Я делаю первый шаг так:
FileContentResult file = File(imageList.Single(), "image/gif");
Я не уверен, что делать дальше. FileContentResult имеет параметр FileContents, который имеет тип байтового массива. Я пытался использовать это, но оно не содержит расширения в данных.
Содержат ли байтовые массивы тип расширения? Я впервые работаю с одним из них, поэтому мне не хватает понимания того, что они из себя представляют и что я могу с ними сделать.
2 ответа
image/gif - это тип пантомимы, используемый в Интернете, чтобы сообщить клиенту, как интерпретировать набор данных.
Это не требуется, если вы сохраняете данные на диск.
Я думаю, что, возможно, ваша формулировка проблемной области немного вводит в заблуждение. Когда вы используете термин "загруженный", вы имеете в виду "извлеченный посредством http-соединения" или "чтение (прошедшее время) из файла на диске или из поля базы данных"??
Я думаю, что это последний случай - поэтому я продолжу.
Необработанные данные, полученные таким способом, НЕ будут иметь имя файла. Зачем??? Имя файла - это указатель на некоторые данные в файловой системе. Если у вас есть коричневые бумажные пакеты с пометкой "зеленые вещи", и вы случайно вытаскиваете из сумки яблоко, внутри этого яблока есть внутренняя связь, которая связывает это яблоко (необработанные данные) с сумкой с пометкой "зеленые вещи" (указатель),
Поскольку ваш код ссылается на FileContentResult, я предполагаю, что вы используете MVC и находитесь в коде контроллера, пытаясь доставить массив байтов обратно в браузер.
Если вы посмотрите на ссылку ниже, вы можете обнаружить, что объект FileContentResult имеет аккуратное свойство с именем "FileDownloadName". Здесь вы хотите установить имя файла - добавьте расширение.
http://msdn.microsoft.com/en-us/library/system.web.mvc.filecontentresult(v=vs.118).aspx