javascript — загрузка файлов с использованием jQuery, JSON и переполнения стека

Это продолжение предыдущего вопроса, найденного здесь:

Отображение файлов в каталоге с использованием PHP и jQuery

Теперь я могу отображать файлы в модальном окне в виде гиперссылок. Теперь мне нужно вместо загрузки файлов отобразить файл на новой вкладке.

Вот как выглядит displayFiles.php:

if(isset($_POST['editpartnercode']))
{
$partnerCode = $_POST['editpartnercode'];
$bookingNum = $_POST['editbooking'];

$dir = "D:/CargoDocsPDFs/". $partnerCode . "/" . $bookingNum;
$ffs = scandir($dir);

$files = array();
foreach($ffs as $ff)
{
if($ff != '.' && $ff != '..')
{
array_push($files, $ff);
}
}
echo json_encode($files);
}

Используя все вышеперечисленное, я могу получить файлы из выбранного каталога и отправить обратно на сторону JavaScript, которая выглядит следующим образом:

$('#resultsTable').on('click', 'tr > td > a.uploadDocs', function(e)
{
var editpartnercode = $(this).attr('data-editpartnercode');
var editbooking = $(this).attr('data-editbooking');
var directpath = "D:/CargoDocsPDFs/"+editpartnercode+"/"+editbooking+"/";

$.post('process/displayFiles.php', {editpartnercode:editpartnercode,editbooking:editbooking}, function(data)
{
var obj = JSON.parse(data);
$('#allFiles').empty();
var htmlToInsert = obj.map(function (item)
{
return "<li><b><a href='"+directpath+""+item+"' target='_blank'>" + item + "</a></b></li>";
});
$('#allFiles').html(htmlToInsert);
});
});

Используя все вышеперечисленное, я могу вернуть файлы на страницу в модальном окне.

Но когда я нажимаю на ссылку, чтобы открыть файл, я получаю следующее сообщение об ошибке:

Не разрешается загружать локальный ресурс: file: /// D: /filelocation/editpartnercode/bookingnum/bookingnum.jpg

Как я могу исправить эту ошибку?

0

Решение

Например, представьте, что вы пытаетесь получить файл из Dropbox, поэтому вам нужно щелкнуть ссылку в Dropbox. Теперь рассмотрите возможность запуска Dropbox на сервере Windows, и файл, который вы пытаетесь получить, находится по адресу D: /files/abc.txt сервера Dropbox.

Теперь вы получите этот файл, если вы положите D: /files/abc.txt в вашем браузере? Без прав? Потому что он будет искать файловую систему с вашего компьютера, а не с сервера Dropbox.

Так что на самом деле вы используете абсолютный путь вашего компьютера. Но дело в том, что для получения файла в вашем браузере у вас должен быть один сервер.

Я думаю, что вы разрабатываете что-то с использованием локального сервера, который работает в локальный / что-то / somethingelse. Прежде всего вы должны осмыслить, что сервер не работает на вашем компьютере, скорее он работает где-то еще.

В dropbox, чтобы получить содержимое файла, вы должны указать что-то вроде URL; dropbox.com/download/abc.txt (Это только для примера). Точно так же вы должны поместить какую-то ссылку в href, которая связана с вашим сервером localhost. подобно локальный / download.php / abc.txt. Сейчас в download.php На странице вы можете написать код, чтобы предоставить вам содержимое файла abc.txt.

1

Другие решения

Как говорится в сообщении об ошибке, загрузка локальных ресурсов с веб-сайта запрещена. Вы можете использовать свою серверную сторону в качестве прокси. Создайте ссылки, чтобы они указывали на серверный скрипт, который просто выводит запрошенный файл. Пока браузер может обрабатывать тип файла (изображения, видео, …), он будет отображать файл.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector