2015-04-22 2 views
1

Я использую плагин для выбора изображений, чтобы выбрать изображение, а затем заставить его загрузить. Я пытался жестко кодировать PHP, и он работает так, как ожидалось. Загрузите всплывающее окно, и мне удалось просмотреть файл. Я не уверен, почему он не работал в AJAX. Что мне не хватает?Сила для загрузки файла с использованием ajax и php

//get the image-source or URL 
    function getImageSrc() 
    { 
     var req = $("div[class='thumbnail selected']").children('img'); 
      var imagessource = []; 
       $(req).each(function (datakey, datavalue) { 
           src = $(datavalue).attr('src'); 
             imagessource.push(src); 
               }); 
         return(imagessource); 
    } 

Вот когда я нажимаю кнопку

$("#download_media").click(function() { 
        var file = getImageSrc();  

        $.ajax({ 
         type: 'POST', 
         url: '?page=downloadController&action=downloadMedia', 
         data: {'file_url': file}, 
         success: function(data) { 
          console.log("success"); 
         } 
        }); 
       }); 

Мой PHP FILE

public function downloadMediaAction() 
{ 
    //get the file_url 
    $file = $this->getRequest()->('file_url'); 

    header("Content-Description: File Transfer"); 
    header("Content-Type: application/octet-stream"); 
    header('Content-Disposition: attachment; filename="'.basename($file).'"'); 
    readfile($file); 
} 
+2

Вы хотите, чтобы браузер отображал окно загрузки и т. Д.? Затем просто переадресуйте ссылку на эту ссылку. AJAX не предназначен для этого. –

+0

Когда я пытаюсь, window.location ('ur'), ​​он просто отображает страницу. он не загружался. – asdasdas

+0

Вы пытались выполнить поиск, прежде чем опубликовать этот вопрос? Я наткнулся на множество ответов, касающихся ** вашего точного вопроса **, потратив всего 15 секунд на [Google] (https://www.google.com.au/search?site=&source=hp&q=ajax+force+file+ скачать и OQ = Аякс + сила + файл + скачать & gs_l = hp.3..0j0i22i30l2.142.4160.0.4325.27.17.1.0.0.1.623.2589.2-2j3j1j1.7.0.msedr ... 0 ... 1c.1.64.hp .. 20.7.2201.0.WdAWKKEFaK0): http://stackoverflow.com/questions/3502267/download-a-file-using-ajax –

ответ

0

Ok, то из вашего запроса AJAX, возвращает URL документа для загрузки, как:

{'url':'http://server:port/path/to/file.php?id=x'}

, а затем с помощью Javascript

document.location='http://server:port/path/to/file.php?id=x';

в file.php вызове метода: public function downloadMediaAction()

и убедиться, что браузер будет загружать его добавить эту строку в downloadMediaAction():

header("Content-Type: application/force-download");

+0

Он использует ajax для запроса, поэтому нет, добавление заголовка ** не будет работать **. –

+0

Плохая идея лгать о типах контента. –

+0

Он работал для меня во всех основных браузерах –

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