10

What is the best way to achieve the below in latest latest browsers (with html5 support). I mainly target Google Chrome.

In my application, data is manipulated through javascript and needs to write output to the file system with a browser prompt (save as dialog). I am not sure about the security restrictions to write to file system, but I am not planning anonymous write (but user is prompted, and selects the location).

I see saveAs not natively supported yet. With my research, I see few options.

  1. https://github.com/eligrey/FileSaver.js
  2. a.download (http://html5-demos.appspot.com/static/a.download.html)
  3. web filesystem
  4. object URLs

FileServer falls back to 2,3,4 if no native support and I may use it. But, I don't find a way to open a Save As dialog. It just save a file in default location (downloads folder in mac).

Which option would you use to get a good support in latest browsers? How can get open the Save As dialog and let the user name the file.

Thanks.

6
  • 1
    what type of file is it. usually you just output it to the browser with the correct headers and the browser takes care of the save as dialog for you. Commented Mar 4, 2013 at 22:22
  • say, a js object, which will serialize to csv / json upon save. Commented Mar 4, 2013 at 22:23
  • stackoverflow.com/questions/4639372/export-to-csv-in-jquery Commented Mar 4, 2013 at 22:25
  • Since your mainly target is Google Chrome, a 5º option is making your application a Chrome Package App and use the chrome.fileSystem API. Commented Jul 21, 2013 at 21:46
  • 1
    In Google Chrome (and currently no other browsers), you can set a download attribute on your link (<a href="rec.csv" download="save_name.csv">). However, this does not use a prompt; it downloads directly to the user's downloads folder. Commented Jul 24, 2013 at 20:08

1 Answer 1

4

I agree with Nathan Hayfield. The browser will handle the save dialog box for you. Setting the header Content-Disposition will send the response back as an attachment and the browser will handle it from there. eg.

content.Headers.Add("Content-Disposition", "attachment; filename=export.csv");
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.