Я пытаюсь загрузить файл с помощью веб-API 2. Но браузер дает «веб-страницу недоступен», когда я напрямую указываю URL-адрес в браузере.Загрузить файл с помощью web api 2
Я написал следующее настраиваемое действие
public class FileActionResult : IHttpActionResult
{
public FileActionResult(string data)
{
this.Data = data;
}
public string Data { get; private set; }
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
string tempFolderPath = HttpContext.Current.Server.MapPath("~/api/tempfiles");
HttpResponseMessage response = new HttpResponseMessage();
Guid guid = Guid.NewGuid();
string folderPath = Path.Combine(tempFolderPath, guid.ToString());
if(!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
string filePath = Path.Combine(folderPath, guid.ToString() + ".json");
File.WriteAllText(filePath, Data);
string zipFile = folderPath + ".zip";
ZipFile.CreateFromDirectory(folderPath, zipFile);
response.Content = new StreamContent(File.OpenRead(zipFile));
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "file.zip",
DispositionType = "attachment"
};
return Task.FromResult(response);
}
}
Я не уверен, что здесь не так. Может ли кто-нибудь помочь мне в этом?
Редактировать Когда я использую Google-PostMan для проверки методов, он показывает правильный ответ. Как заставить браузер загружать файл? Thanks
Этот код выглядит хорошо для меня. Может быть, что-то не так в вашем методе WebAPI? Вы уверены, что используете правильный HTTP-глагол? – vzayko
Я использую HTTPGet. –
Я имею в виду, что «страница недоступна» может привести к неправильному вызову метода, т. Е. Ваш метод ожидает GET, но вы используете POST или неправильное количество параметров метода или пользовательские проблемы маршрутизации. Попробуйте поймать ваш вызов, используя инструменты браузера F12, и проанализируйте параметры ввода и ответ сервера. – vzayko