2009-02-24 3 views
56

Есть ли способ получить jQuery для получения информации в файл и из него? Является ли это возможным? Как?Чтение/запись в файл с помощью jQuery

+2

Вы можете не писать ответа на поле внутри HTML? –

+0

Это неправда. но доступ, который вы можете получить через javascript, ограничен тем, что пользователь разрешает вам. – Kiwy

+1

Песочница предотвращает прямой доступ к файлам из соображений безопасности. Вы можете использовать API файлов HTML5, чтобы позволить пользователю выбирать файлы из диалогового окна файла. –

ответ

68

Нет, JavaScript не имеет доступа к написанию файлов, так как это было бы огромной угрозой безопасности, если не сказать больше. Если вы хотите получить/хранить информацию на стороне сервера, вы можете, конечно, сделать вызов Ajax для PHP/ASP/Python/и т. Д. скрипт, который может затем получить/сохранить данные на сервере. Если вы хотите хранить данные на клиентской машине, это невозможно с помощью JavaScript. Я подозреваю, что Flash/Java может быть в состоянии, но я не уверен.

Если вы только пытаетесь сохранить небольшой объем информации в течение ненадежного периода времени относительно конкретного пользователя, я думаю, вы хотите Web Storage API или файлы cookie. Я не уверен в вашем вопросе, что вы пытаетесь выполнить.

+8

Cookies будут работать, конечно, но с большинством современных браузеров, поддерживающих локальное хранилище HTML5, я бы пошел по этому маршруту. Вот хороший справочник о том, как это работает: http://diveintohtml5.org/storage.html –

+2

@ChrisJaynes - эта ссылка не работает, я думаю, что вам нужен этот: [http://diveintohtml5.info/storage.html] (http://diveintohtml5.info/storage.html) – rjohnston

+0

@marcgg Я думаю, что вы, возможно, запутали Java (сделанный Sun) с JavaScript. –

5

Cookies - ваш лучший выбор. Найдите плагин jquery cookie.

Cookies разработаны для такого рода ситуаций - вы хотите сохранить некоторую информацию об этом клиенте на стороне клиента. Просто имейте в виду, что файлы cookie передаются туда и обратно в каждом веб-запросе, поэтому вы не можете хранить там большие объемы данных. Но простой ответ на вопрос должен быть прекрасным.

8

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

Чтобы установить это, вы бы:

  • Создать скрипт, который обрабатывает чтение файла и запись. Это должно быть видно в браузере.

  • Отправить jQuery ajax-запросы к этому скрипту, которые либо записывают данные, либо читают данные. Вам нужно будет передать всю вашу информацию для чтения/записи через параметры запроса. Об этом можно узнать в документации jQuery ajax.

Убедитесь, что вы дезинфицируете данные, которые вы храните, поскольку это потенциально может представлять угрозу безопасности. Однако это действительно просто стандартное хранилище данных с плоскими файлами, и это не обязательно так необычно.

Как отметил Паоло, нет возможности напрямую читать/писать в файл через jQuery или любой другой тип javascript.

14

как HTML5, так и Google Gears добавляют возможности локального хранения, в основном встроенным API-интерфейсом SQLite.

2

Если вы хотите сделать это без кучи обработки на стороне сервера на странице, может оказаться целесообразной возможность вывести текстовое значение в скрытое поле (используя PHP). Затем вы можете использовать jQuery для обработки значения скрытого поля.

Независимо от того, что плавает ваша лодка :)

10

Эта функция Javascript представляет собой «Сохранить как» диалоговое окно для пользователя, который запускает эту функцию через свой браузер. Пользователь нажимает OK, и файл сохраняется на стороне сервера.

Это используется для работы со всеми браузерами, но теперь работает только с IE. Следующий код представляет собой угрозу безопасности, если javascript может сохранять данные на стороне сервера, хакер может использовать свои серверы. Firefox и Chrome подключили отверстие, но IE еще не сделал этого.

// content is the data (a string) you'll write to file. 
// filename is a string filename to write to on server side. 
// This function uses iFrame as a buffer, it fills it up with your content 
// and prompts the user to save it out. 
function save_content_to_file(content, filename){ 
    var dlg = false; 
    with(document){ 
    ir=createElement('iframe'); 
    ir.id='ifr'; 
    ir.location='about.blank'; 
    ir.style.display='none'; 
    body.appendChild(ir); 
     with(getElementById('ifr').contentWindow.document){ 
      open("text/plain", "replace"); 
      charset = "utf-8"; 
      write(content); 
      close(); 
      document.charset = "utf-8"; 
      dlg = execCommand('SaveAs', false, filename); 
     } 
     body.removeChild(ir); 
    } 
    return dlg; 
} 

Вызов функции, как это:

msg = "I am the president of tautology club."; 
save_content_to_file(msg, "C:\\test"); 
+1

Ваше решение не работает для меня ни на Firefox 18.0.2, ни на Chrome 24. – Maxbester

+1

К сожалению, этот код больше не работает со всеми браузерами, он работает только с IE. –

+0

Хорошо спасибо за ответ. – Maxbester

Смежные вопросы