JavaScript — редактировать файл на сервере с веб-страницы

Я хочу, чтобы на моей веб-странице был набор редактируемых файлов Excel:

  • Я даю ссылки на то, что для пользователя представляет собой файл Excel
  • Одним щелчком мыши откроется программа пользователя по умолчанию для редактирования файлов Excel (скажем, MS Excel).
  • После завершения редактирования файл должен быть прозрачно загружен на мой сервер для пользователя, и в следующий раз, когда пользователь заходит на мою страницу, он должен увидеть свой отредактированный файл и снова иметь возможность его редактировать.

Что я учел:

  • JavaScript Excel-подобная сетка. Тем не менее, я не нашел библиотеку JavaScript с достаточными функциями, такими как легко перемещающиеся строки (какой-нибудь совет относительно хорошего компонента JavaScript Excel?)
  • Сохранение в DropBox / Google Docs / … с использованием их API. Однако для этого требуется, чтобы у пользователя была учетная запись, и, вероятно, мне потребуется управлять паролями DropBox пользователя (и не все пользователи захотят поделиться паролями со мной). Также мне понадобятся интерфейсы для Google Drive, Miscrosoft OneDrive и кто знает, сколько других сервисов.
  • Разрешить пользователю загружать файл и полагаться на него, чтобы загрузить его снова. Однако это слишком сложно для пользователя, и пользователи забудут загрузить файлы, что означает потерю их правок. Любой способ или загрузка файла автоматически после закрытия?
  • Макрос в моих файлах Excel, который связывается с моим сервером перед выходом. Однако для этого требуется, чтобы пользователь включил макросы (тревога безопасности) и может быть ненадежным в случае разрыва соединения. Я не оценивал, возможно ли это технически.

Или какой самый лучший / самый простой способ достичь этого?

(Я знаю, как создавать файлы Excel и как открывать их с веб-страницы; моя проблема в том, как вернуть пользователю изменения на сервер прозрачно для пользователя.)

1

Решение

Я думаю, что самый простой способ сделать это («прозрачно вернуть пользователю изменения на сервер») — это использовать AJAX (JS) запросы к PHP-скриптам.

AJAX отлично подходит для работы в фоновом режиме (асинхронно), но он не может редактировать сервер. Просто добавьте прослушиватель событий в JS ( onchange или же onblur, возможно) и отправлять AJAX-запрос каждый раз, когда пользователь редактирует файл.

PHP является отличным языком сценариев на стороне сервера, и вы можете редактировать файлы с ним.


РЕДАКТИРОВАТЬПример (по запросу)

Предполагая, что файл Excel хранится в строке в <textarea> для простоты (на данный момент) вы можете настроить прослушиватель для получения данных из него (в jQuery) и отправить запрос AJAX:

HTML:

<textarea id="excel"></textarea>

JS:

$("#excel").change(function() {
var excelFile = $(this).val();
$.ajax({
url: "updateFile.php",
method: "post",
data: { data: excelFile }
});
});

PHP (updateFile.php):

<?php
$data = $_POST["data"];
$file = fopen("FILENAME.xlsx", "w+");
fwrite($file, $data);
fclose($file);
?>
0

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

Других решений пока нет …