2016-02-10 3 views
0

Мне нужно загрузить файл и вернуть с файлом некоторые данные в модели.MVC: Загрузить файл и вернуть модель из того же действия

Я исследовал его, но я не мог найти никакого результата для этого. На данный момент я могу сказать: «Это невозможно», но, возможно, некоторые из вас могут ответить на мой вопрос. мне нужно что-то вроде:

...return Json(new {data:"some string", File("some.zip")}); 

Кроме того, я использую angularJS в стороне клиента. Поэтому для подключения к серверу я использую оператор $http, а в качестве responseType у меня есть «arraybuffer».

+0

Вы хотите скачать файл И модель? или файл В модели? JSON, который вы предоставили, не является допустимым, так как нет ключа для файла File («some.zip») – cl3m

+0

файла и модели или файла в модели. Для меня importatnt для получения данных с сервера одним ответом. –

ответ

1

Вы можете base64 закодировать файл и отправить его в качестве свойства JSON:

Byte[] bytes = File.ReadAllBytes("path"); 
String file = Convert.ToBase64String(bytes); 

// JObject from Newtonsoft Json.net library 
var json = new JObject 
{ 
    {"data","some data" }, 
    {"file", file }, 
    // You could add some file properties as well : 
    {"filesize": 54836 }, 
    {"filetype": "image/jpeg"}, 
    {"filename": "profile.jpg"}, 
}; 

return Json(json, JsonRequestBehavior.AllowGet); 

Тогда в вашем угловом/код на JavaScript, которые вы можете обратиться к this article (непроверенные), чтобы преобразовать обратно закодированного файла.

+0

статья не найдена :( –

+0

Ссылка исправлена. Вы всегда можете использовать google для файла с угловым декодированием base64 – cl3m

Смежные вопросы