открыть файл из вызова ajax?

#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');