Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (4)

Лучшие ответы пользователя

Все ответы (3)
  • Как скачать файл средствами php?

    @ynChrome
    Это очень простая магия (:

    <?php
    // Имя файла
    $fileName = 'path/to/file/1.m4a';
    
    // Посылаем заголовки
    header("Content-Type: audio/mp4");
    header("Content-Length: " . filesize($fileName));
    
    // Если нужен диалог сохранения, добавляем такой заголовок:
    $quoted = sprintf('"%s"', addcslashes(basename($fileName), '"\\'));  // Или любое другое имя файла
    header("Content-Disposition: attachment; filename='$quoted'");
    
    
    // Можно использовать хэндлер файла
    $fp = fopen($fileName, 'rb');
    fpassthru($fp);
    
    // А можно без хэндлера
    readfile($fileName);
    Ответ написан
    Комментировать
  • Не отображается echo из-за ajax запроса?

    @ynChrome
    Ну как бы текст echo отображается, да вот только ничто этот ответ не читает. А надо, чтобы читало.
    Да, вы правы, дело в AJAX. JS сходил, постучал по вашему URL, закинул туда файл, и на этом его работа закончилась.
    Чтобы не закончилась, а что-то куда-то вывести, надо дописывать JS. Например, так:

    $.ajax({
          xhr : function() {
            var xhr = new window.XMLHttpRequest();
    
            xhr.upload.addEventListener('progress', function(e) {
    
              if (e.lengthComputable) {
    
                console.log('Bytes Loaded: ' + e.loaded);
                console.log('Total Size: ' + e.total);
                console.log('Percentage Uploaded: ' + (e.loaded / e.total))
    
                var percent = Math.round((e.loaded / e.total) * 100);
    
                $('#progressBar').attr('aria-valuenow', percent).css('width', percent + '%').text(percent + '%');
    
              }
    
            });
    
            return xhr;
          },
          type : 'POST',
          url : '/union.php',
          data : formData,
          processData : false,
          contentType : false,
          // В response будет то, что вывел echo
          success: doSmth(response) // <-- Вот тут. Можно и анонимную функцию сделать, это не критично
        });
    
    // Чтобы не усложнять
    function doSmth(responseData) {
        // ...
        // ...
        console.log(responseData);
        // ...
    }
    Ответ написан
    Комментировать