#jquery #asp.net-mvc-2 #c#-3.0
#jquery #asp.net-mvc-2 #c #-3.0
Вопрос:
я пытаюсь открыть файл с помощью ajax-вызова, но он не открывается? это работает, когда я набираю его непосредственно в браузере (http://localhost/home/showfile )?
<script type="text/javascript">
$.ajax({
type: 'POST',
url: "/Home/ShowFile"
})
</script>
public ActionResult ShowFile()
{
return File(@"C:\development\FileOpen\FileOpen\TextFile1.txt", "application/octet-stream", Server.HtmlEncode("TextFile1.txt"));
}
Комментарии:
1. Вам действительно нужно что-то сделать с результатом вызова ajax.
2. да, я хотел бы открыть файл
3. Открыть файл в браузере? Что именно это означает? Показать файл пользователю? — Как? В
<div>
? Открыть его в новом окне или вкладке?
Ответ №1:
Не совсем понятно, что вы пытаетесь сделать с файлом после его извлечения, но вы можете начать с добавления обратного вызова, чтобы $.ajax
что-то сделать с возвращенными данными. Например:
$.ajax({
type: 'POST',
url: '/Home/ShowFile',
success: function (data) {
console.log(data); // log the response, or
$('#some-element-id').text(data); // dump it into an existing element
}
})
Вам действительно нужен HTTP post, хотя? Вы ничего не отправляете с запросом, так почему бы просто не использовать HTTP get?
Комментарии:
1. я хотел бы открыть диалоговое окно для пользователя, чтобы открыть / сохранить файл?
2. Тогда вам вообще не нужен ajax ! Просто создайте обычную ссылку на файл и убедитесь, что файл отправляется с HTTP-заголовком
Disposition: attachment, filename="whatever.txt"
.
Ответ №2:
Во-первых, вам нужно убедиться, что файл находится на вашем локальном сервере из-за той же политики происхождения. Затем вы можете использовать что-то вроде jQuery load для загрузки в файл.
$('#destination').load('/path/to/file.txt');