#php #docker #localhost #onlyoffice
#php #docker #localhost #onlyoffice
Вопрос:
Я хочу иметь возможность открывать документы Office, которые присутствуют на моем компьютере, со своего веб-сайта (в долгосрочной перспективе это будут файлы, хранящиеся на сервере NAS нашей сети)
Итак, я установил OnlyOffice благодаря docker на свой компьютер с помощью этой команды (я на Windows 10)
docker run -i -t -d -p 90:80 --restart=always onlyoffice/documentserver
Я использовал порт 90, потому что порт 80 уже используется Wamp
Затем на моем веб-сайте, размещенном локально, благодаря Wamp, я создал этот файл :
Index.html
<div id="placeholder" style="height: 100%"></div>
<script type="text/javascript" src="http://localhost:90/web-apps/apps/api/documents/api.js"></script>
<script type="text/javascript">
window.docEditor = new DocsAPI.DocEditor("placeholder",
{
"document": {
"fileType": "docx",
"title": "Example Document Title.docx",
"url": "https://file-examples-com.github.io/uploads/2017/02/file-sample_500kB.docx"
},
"documentType": "word",
"editorConfig": {
"mode": "view"
},
"height": "100%",
"width": "100%"
});
</script>
(Используя URL внешнего сайта, это работает)
Поэтому я изменил свой скрипт, чтобы получить локально размещенный файл таким образом
ПРИМЕЧАНИЕ: http://mysite.test
является ли vhost соответствующим http://localhost/mysite
(на WAMP)
Index.html (версия 2)
<script type="text/javascript" src="http://localhost:90/web-apps/apps/api/documents/api.js"></script>
<script type="text/javascript">
window.docEditor = new DocsAPI.DocEditor("placeholder",
{
"document": {
"fileType": "docx",
"title": "Example Document Title.docx",
"url": "http://mysite.test/get_file.php"
},
"documentType": "word",
"editorConfig": {
"mode": "view"
},
"height": "100%",
"width": "100%"
});
</script>
get_file.php
<?php
$file_url = 'C:UsersuserDesktoptest.docx';
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=test.docx");
readfile($file_url);
?>
И там это не работает! (файл правильно загружен, если я получаю доступ непосредственно по ссылке http://mysite.test/get_file.php
)
У меня есть эта ошибка на index.html :
Download failed.
Журналы Docker :
[2021-01-06T14:04:18.136] [ERROR] nodeJS - error downloadFile:url=http://mysite.test/get_file.php;attempt=3;code:null;connect:null;(id=127d6893c0ab2f9f8b71)
Error: Error response: statusCode:404 ;body:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /get_file.php</pre>
</body>
</html>
at Request._callback (/snapshot/server/build/server/Common/sources/utils.js:0:0)
at Request.init.self.callback (/snapshot/server/build/server/Common/node_modules/request/request.js:185:22)
at Request.emit (events.js:198:13)
at Request.<anonymous> (/snapshot/server/build/server/Common/node_modules/request/request.js:1154:10)
at Request.emit (events.js:198:13)
at Gunzip.<anonymous> (/snapshot/server/build/server/Common/node_modules/request/request.js:1076:12)
at Object.onceWrapper (events.js:286:20)
at Gunzip.emit (events.js:203:15)
at endReadableNT (_stream_readable.js:1143:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
Я использую get_file.php PHP-файл, потому что в конечном итоге это будет тот, кто будет управлять правами пользователей, уже присутствующих на сайте (например, пользователь1 может получить доступ только к файлам .docx, а пользователь2 — только к файлам .xlsx)
Можете ли вы сказать мне, как просмотреть мои локальные файлы (в будущем на сервере NAS) с помощью OnlyOffice?
Комментарии:
1. «не работает» означает, что именно? Это не исправляемая ошибка. Попробуйте предоставить конкретную техническую информацию — например, сообщения об ошибках в консоли или сетевых инструментах и / или сведения о том, как ведет себя программа.
2. @ADyson Извините, я забыл поместить сообщение об ошибке, я отредактировал свой пост (спасибо)
3. Из журнала похоже, что что-то каким-то образом перевело URL в
http://mysite.test/get_file/
вместоhttp://mysite.test/get_file.php
. Однако из того, что вы показали, не очевидно, как это произошло. Также в нем говоритсяnodeJS
… при чем здесь NodeJS? До сих пор вы показывали JS на стороне клиента и PHP.4. @ADyson Ошибка в ссылке исправлена, она пришла из моего htaccess, я изменил свой пост, но я понятия не имею, откуда взялся nodejs, я думаю, что это из OnlyOffice