Как удалить файл с помощью JavaScript? - PullRequest
5 голосов
/ 15 марта 2010

Не повезло с этими примерами:
Файл Javascript удалить
Метод Javascript FSO DeleteFile
Удаление файла

Для файла нет специальных разрешений.
Есть ли способ сделать это в JQuery ?

Требование - определенный файл должен быть удален из веб-каталога при загрузке другой страницы. Нет проблем с безопасностью, так как это происходит в закрытой сети.

Любая помощь приветствуется.

Спасибо.

Ответы [ 7 ]

11 голосов
/ 16 марта 2010

С чистым JavaScript это невозможно сделать. Использование AJAX-вызова сценария на стороне сервера, который удаляет файл, будет работать.

3 голосов
/ 16 марта 2010

Javascript не может удалять файлы, это предотвращено, так как это приведет к ОГРОМНЫМ уязвимостям безопасности. Эти ссылки предназначены для элементов управления ActiveX, которые обрабатываются через JS. Используйте язык на стороне сервера.

3 голосов
/ 16 марта 2010

Вы не можете удалять файлы по HTTP (ну, теоретически вы можете, но это не реализовано.)

Самый простой способ - установить крошечный серверный скрипт (например, в ASP или PHP) и вызывать его из JavaScript. Сценарию на стороне сервера необходимы надлежащие разрешения для удаления, но в остальном проблем не возникает.

В PHP начало будет выглядеть так: (Не расширяя решение до полностью безопасного, потому что вы не говорите, на какой платформе вы находитесь)

<? 

  // STILL INSECURE!!!!
  // Do not use in any public place without authentication.
  // Allows deletion of any file within /my/files
  // Usage: filename.php?file=filename 

  $basedir = "/my/files";
  $file_to_delete = $_REQUEST["file"];  

  $path = realpath($basedir."/".$file_to_delete);
  if (substr($path, 0, strlen($basedir)) != $basedir)
   die ("Access denied"); 

  unlink($path);

?>

Вы бы назвали скрипт так:

http://yourserver/directory/delete_file.php?file=directory/filename
2 голосов
/ 16 марта 2010

Вы не можете удалить файл на удаленном сервере, используя только JavaScript, запущенный в браузере посетителя. Это должно быть сделано с помощью серверного скрипта.

1 голос
/ 16 марта 2010

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

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

Однако вы можете использовать jQuery для вызова кода на стороне сервера через AJAX, такого как $ .get или $ .post, а затем код на стороне сервера удаляет его, и может показаться, что JS удаляет файлы.

1 голос
/ 16 марта 2010

Javascript - это язык на стороне клиента. Таким образом, вы не можете удалить файл на сервере напрямую. Все предоставленные вами примеры могут использоваться только для удаления файлов на локальном компьютере, но не на сервере.

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

1 голос
/ 16 марта 2010

Если вы делаете это RESTFUL, вы бы отправили запрос HTTP DELETE .

jQuery's ajax метод утверждает, что вы можете использовать параметр метода для указания 'DELETE', но отмечает, что некоторые браузеры могут не поддерживать его.

Очевидно, что вам понадобится веб-сервер, который будет принимать запрос DELETE и применять какую-то аутентификацию / авторизацию, чтобы случайный посетитель joe не мог удалить ваши файлы. Я верю, что Apache mod_dav поможет вам начать здесь.

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