Как я служу загружаемому файлу онлайн, не выставляя физический путь?

Time является непрерывной мерой и должна быть числовой:

chlo$Time<-as.numeric(chlo$Time)

# install.packages("ggplot2") #uncomment and run if you don't have this package
library(ggplot2)
ggplot(chlo,aes(x=Time,y=Growth, colour=Culture))+
  geom_point()+
  geom_line()

enter image description here

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

http://www.sthda.com/english/wiki/ggplot2-error-bars-quick-start-guide-r-software-and-data-visualization

7
задан Cory House 15 May 2009 в 16:17
поделиться

8 ответов

Не делайте этого. Вместо этого храните файлы где-нибудь за пределами дерева документов, а затем сделайте их доступными с помощью сценария (например, php, .Net, любого другого)

Сценарий может проверить, вошли ли они в систему, проверить, разрешен ли им файл, и если так что верни это. Путь, по которому они идут, может выглядеть примерно так ... /download.php?file=mypdf.pdf[1256 visible Что-то вроде ...

<?php
if (IsUserLoggedIn())
    readfile('/secret/path/to/file/mypdf.pdf');
?>
11
ответ дан 6 December 2019 в 08:17
поделиться

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

Похоже, это показывает пример ОК на php, который, как вам показалось, использовать? Просто добавьте проверку безопасности в начало php и выкиньте их, если они не авторизованы.

http://www.higherpass.com/php/Tutorials/File-Download-Security/

8
ответ дан 6 December 2019 в 08:17
поделиться

Что вы хотите сделать, так это создать страницу PHP, которая выполняет две функции:

  1. аутентифицирует пользователя, который делает запрос
  2. передает файл клиенту

Это ссылка поможет с потоками. И этот код может быть полезным:

header("Content-Disposition: attachment; filename=$name of pdf that you want to download");
header("Content-Type: application/pdf");
header("Content-Length: ".filesize("$location of pdf/$name of pdf that you want to download"));
header("Pragma: no-cache");
header("Expires: 0");
$fp=fopen("$location of pdf/$name of pdf that you want to download","r");
print fread($fp,filesize("$location of pdf/$name of pdf that you want to download"));
fclose($fp);
exit();

Видел это в обсуждении здесь .

1
ответ дан 6 December 2019 в 08:17
поделиться

лучший способ сделать это - использовать php / asp или файл сценария на стороне сервера, который считывает документ в месте, недоступном извне

этот файл затем может проверить, вошел ли пользователь в систему, и может также скрыть путь к физическому файлу

, чтобы URL-адрес был www.yourwebsite.com/file.php?file=image.png

file.php, чтобы проверить, что пользователь вошел в систему затем он прочитает файл или перенаправит их на страницу входа

1
ответ дан 6 December 2019 в 08:17
поделиться

Много месяцев назад у меня была похожая проблема с классическим ASP.

Хранил файлы в каталоге вне корневого веб-каталога.

После проверки отправил файл через ADODB.Stream, а затем проверил расширение файла, чтобы убедиться, что у меня установлен правильный mime-тип.

1
ответ дан 6 December 2019 в 08:17
поделиться

Непонятно, используете ли вы ASP.NET, ASP.NET MVC или что-то еще. Однако этот пост ...

Как я могу представить файл для загрузки из контроллера MVC?

... показывает, как программно вернуть файл пользователю с помощью ASP.NET (вопрос показывает ASP. NET, ответы показывают путь MVC).

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

Если вы находитесь на той стадии разработки, когда еще не поздно использовать ASP.NET MVC, сделайте это. Этот сценарий (обслуживание файла) становится однострочным, и многие другие вещи будут проще (в частности, тестирование вашего приложения).

0
ответ дан 6 December 2019 в 08:17
поделиться
  1. Use a script for access control

    Make a script like myurl.com/file.php?docs/mypdf.pdf which checks that the user has rights to access the file. The script will fetch the file from a place that is not visible to the web.

  2. (Optional) Use mod_rewrite to make your urls look nice, and redirect user to the file.php script. Something like:

    RewriteCond docs/%{REQUEST_FILENAME} !-f

    RewriteRule ^(.*)$ file.php/$1 [QSA,L]

    This will redirect /docs/mypdf.pdf to /file.php?docs/mypdf.pdf but look nicer for the user.

0
ответ дан 6 December 2019 в 08:17
поделиться

Вы можете использовать IHttpHandler в .net, хотя вам нужен доступ с использованием подстановочных знаков в IIS. Вы можете использовать обработчик на основе сеанса.

0
ответ дан 6 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: