Как я могу создать URL для автоматической загрузки файла с использованием HTML и PHP? - PullRequest
1 голос
/ 23 апреля 2019

Моя проблема:

Я хочу отправить своим клиентам ссылку типа mywebsite.com/products, чтобы они могли загрузить файл .xlsx и посмотреть, что я вижу.

Есть ли способ создать ссылку типа "www.mywebsite.com/file", поэтому, когда пользователь получит доступ к этому URL, браузер откроет приглашение загрузить файл .xlsx?

Вот мой файл products.html:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Refresh" content="0; url=http://mywebsite.com/products.xlsx"/>
  </head>
</html>

Я уже загрузил products.xlsx на свой сервер.

Я заметил, что если я захожу на веб-сайт с помощью расширения .html, он предлагает пользователю загрузитьфайл.Если я получаю доступ без расширения, это приводит к ошибке 404.

Может быть, это моя конфигурация .htaccess, которая вызывает это?

Может быть, Options +MultiViews или HTML RewriteCond ..

Options All -Indexes

DirectoryIndex index.php index.htm index.html

RewriteEngine on
RewriteBase /

# ---- Make pages render without their extension in the url
Options +MultiViews


# Force HTTPS on the subdomains/subdirectories login or admin
#RewriteCond %{HTTPS} off
#RewriteCond %{HTTP_HOST} ^(login|admin)\. [NC]
#RewriteCond %{REQUEST_URI} ^(login|admin)\. [NC,OR]
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Force WWW if no subdomain is given
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Remove php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

# Remove html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

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

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Если вы хотите использовать PHP для предоставления файла xlsx при загрузке веб-страницы:

<?php
$fileName = 'Products.xlsx';
$filePath = "[PATH]/products.xlsx";
header('Content-disposition: attachment; filename=' . $fileName);
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: ' . filesize($filePath));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
readfile($filePath);

Замените [ПУТЬ] на путь к файлу.

1 голос
/ 23 апреля 2019

точка. Вы хотите, чтобы ссылка на файл products.xlsx изменялась в зависимости от того, с кем вы говорите?То есть.у одного клиента может быть определенный файл products.xlsx, содержащий некоторую информацию, но у другого может быть совершенно другая информация, которую он должен увидеть.

Если это не так, вы можете использовать тег <a> для ссылки на ссылку.

Так, например:


<a href='/excel/products.xlsx' target="_blank">Click to Download Excel Document</a>

Тогда все, что вам нужно сделать, - это включить это в ваш <body> на странице, и клиенты могут щелкнуть ссылку для загрузки файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...