Используйте CGI и Javascript для сохранения файла - PullRequest
1 голос
/ 17 октября 2011

У меня есть несколько JSON-сценариев, которые я планирую проанализировать на сайте и затем разрешить клиентам редактировать их через мой интерфейс (чтобы позже загрузить и снова проанализировать для отображения).Проблема в том, что у Javascript нет доступа к записи в файловую систему.У меня уже есть система для чтения файлов JSON с использованием Javascript (и jQuery).Теперь я слышал, что могу использовать CGI для сохранения данных позже.Может кто-нибудь дать мне некоторые ссылки и подробные объяснения?Я читал немного о CGI в целом, но ничего конкретного.

Спасибо за любую помощь!

1 Ответ

1 голос
/ 17 октября 2011

CGI - это способ взаимодействия серверов со скриптами.В большинстве случаев вы просто настраиваете сервер на выполнение файла, и он будет выполнять его с несколькими установленными переменными среды и данными POST, поданными на его стандартный ввод.Сценарий должен выводить заголовки страницы, за которыми следует содержимое.

CGI-сценарии могут быть написаны на разных языках.Perl хорошо известен CGI-скриптами;здесь есть документация здесь .Python имеет a cgi модуль для работы с CGI.В Ruby есть также a CGI пакет .

Вот быстрый CGI-скрипт, написанный на Python, который записывает в файл.Возможно, вы захотите изменить его или использовать его в качестве справочного, а не использовать его как есть:

#!/usr/bin/env python
import os
import os.path
import sys
import json
import cgi
# You'll probably want to remove or alter
# the following line for production.
import cgitb; cgitb.enable()

def bad_request():
    print "Status: 400 Bad Request"
    print "Content-Type: application/json"
    print ""
    json.dump({'success': False}, sys.stdout)
    sys.exit(0)

assert 'REQUEST_METHOD' in os.environ
if os.environ['REQUEST_METHOD'] != 'POST':
    bad_request()

form = cgi.FieldStorage()
if 'data' not in form:
    bad_request()

filename = os.path.join(os.path.dirname(__file__), "some_file.json")
with open(filename, "wb") as f:
    f.write(form['data'].value)

print "Content-Type: application/json"
print ""
json.dump({'success': True}, sys.stdout)

Если вы POST к нему с параметром data, он сохранит эти данныев some_file.json в том же каталоге, что и он сам.

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