views:

881

answers:

4

Is it possible to read a file in from a path in JavaScript and create a byte[] of that file?

+4  A: 

No. JavaScript is purposely designed to have very minimal file IO (think cookies) because allowing it to access arbitrary files (local and remote) would be a massive security risk.

Ian Kemp
For all who write about file-i/o and security risk: For web originated JavaScript executed in the browser file i/o is a security risk. Does not depend on the programming language, though. The risk, as stated here, is basically applicable to all programming languages.
gimpf
+3  A: 

There are two forms of JavaScript: client-side and server-side. In client-side JavaScript it is not possible, while in server-side JavaScript, it is possible. So it depends on whether you are using client-side or server-side JavaScript.

That said, client-side JavaScript is much more common and if you were using server-side JavaScript, you would probably know the answer to your question. So I'm going to go out on a limb and say that no, it is not possible to read in from a path in JavaScript and create a byte[] from that file.

(Also, it's unclear what you mean by a byte[]; that's not a common notation when using JavaScript. Are you sure you aren't talking about Java? Java is completely different from JavaScript: in Java byte[] is a more common notation.)

Imagist
I believe he just wanted to know if he could load the file's bytes into an array. Javascript doesn't have this notation, but an array of numbers would essentially do the same thing. Do you have any links about serverside javascript? I haven't used server side javascript and am I curious as to where it is used.
Zoidberg
Zoidberg, have a look athttp://en.wikipedia.org/wiki/Server-side_JavaScript
Ian Kemp
A: 

File I/O in Javascript is considered a serious security risk:

http://forums.devshed.com/javascript-development-115/file-i-o-with-javascript-10376.html

pavium
+2  A: 

Yes, you can — in Firefox, anyway. Other browsers may or may not choose to allow it in the future.

Make a file upload field for the user to pick the file, and read it through the input.files list. eg. document.getElementById('myuploadfield').files[0].getAsBinary(). This puts each byte in a single character of a JavaScript String, which is about as close to a byte[] as you're going to get.

This is quite a specialized interface and probably Not The Right Thing — heed the other replies, because it's very possible you are trying to do something in a inappropriate way. Difficult to tell without context.

bobince
upvoted for relevant and cool information.
Mehmet Duran