Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript: Listing File and Folder Structure

As I have read, it is not easy for JavaScript to modify files on client PC. I am working on a web based file manager and would need to know the following:

  • Can JavaScript list files and folder structure on a client PC?
  • Can JavaScript list files and folder structure on a server?

If your answer is no, that Java Scipt can not list files and folders say on client's or server's C:\ drive, than would CGI script be the only solution?

like image 240
Bunkai.Satori Avatar asked Dec 27 '22 00:12

Bunkai.Satori


1 Answers

Browser JS reading client PC's files: Depends

For a security reason, you can't access the files on the user's PC without the user's consent.

That's why the FileReader API is created around the file input box <input type="file"> and a drag-n-drop area since the whole idea is to "access the file with user's consent". Without the user intentionally putting the file for access, you can't access it at all.

Server-side JS reading own server's files: Yes

As for server, if you meant access the server using server-JS (NodeJS or Rhino), yes you can (How else would it serve webpages anyway?).

Browser JS reading own server's files: Depends

Accessing the server from the browser using JS works if you have an API to read files from it.

Browser JS reading other server's files: Yes, with a catch

To access other server's files without some API, you could resort to creating a web scraper or a web-spider that runs server-side (since browser can't cross domains due to the same origin policy) and have an API exposed to your browser.

However:

  • you can't crawl to all files as some may be restricted from outside access.
  • the public appearance of the structure could be different from the internal structure, especially if the site uses segmented url scheme
  • sites using query strings to generate pages cannot be crawled easily due to the number of permutations it could make, thus some pages might be unreacheable.
like image 126
Joseph Avatar answered Dec 29 '22 15:12

Joseph