2012-05-16 5 views
1

Я бег python -m SimpleHTTPServer 8888 из каталога my_server, и я хочу, чтобы получить доступ к index.html файлу, содержащему яваскрипт команды, которая считывает my_file.csv, но файл не в my_server или один из его вложенных папок.Как следовать символической ссылке с помощью javascript?

path/to/my_server $ ln -s /some_path/to/my_file.csv symbolic_link_to_my_file.csv 
path/to/my_server $ python -m SimpleHTTPServer 8888 

Если я создаю символическую ссылку внутри my_server, что указывает на my_file.csv, а затем получить доступ к нему, как это:

http://localhost:8888/my_server/index.html?file=symbolic_link_to_my_file.csv 

есть ли способ, которым я мог следовать этой символической ссылки с JavaScript внутри index.html читать my_file.csv ?

<script> 
    //read URL params 
    ... 
    d3.csv(file, ...) 
</script> 

ответ

1

Чтение документов в команде d3.csv, вам необходимо отправить полный URL-адрес. https://github.com/mbostock/d3/wiki/CSV

Что представляет собой значение file в команде d3.csv(file? Если вы отправляете что-то вроде «filename.csv», это может быть просто добавление к текущему URL-адресу или текущему каталогу. Вероятно, вы хотите отправить полный URL-адрес (с косой чертой в начале): /folder/myfile.csv

Если вы введете этот URL-адрес в свой браузер, это даст вам файл CSV? http://localhost:8888/my_server/index.html?file=symbolic_link_to_my_file.csv

Если это так, то содержимое file должно быть /my_server/index.html?file=symbolic_link_to_my_file.csv.

+0

Он делает. Я делал глупую ошибку. Благодаря! – nachocab

5

JavaScript, работает в браузере, не имеет доступа к файловой системе на всех (по этому вопросу, и не что-нибудь еще в браузере).

Клиент видит только URI.

Веб-сервер несет ответственность за предоставление соответствующего ресурса для URI.

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

+0

SimpleHTTPServer уже следует символическим ссылкам, но запрос состоит в том, чтобы получить index.html, а не my_file.csv. Я предполагаю, что я мог бы запросить сервер предоставить этот файл с помощью ajax – nachocab

+0

Нет, запрос принадлежит '/my_server/index.html? File = symbolic_link_to_my_file.csv'. Возможно, сервер может решить, что это означает «Содержимое файла * index.html *», но вы можете это изменить. Вы также можете написать JavaScript (возможно, используя объект XMLHttpRequest), чтобы сделать второй запрос на другой URL-адрес, который вы работаете на основе данных в объекте 'location'. – Quentin

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