The
applet needs to be digitally signed, so that it is allowed to do file I/O on the client. It doesn't need to ask the user where to store the file - it can create it whereever it likes, under whatever filename it wants. Retrieving the file from the server could be as simple as "new URL(...).getContent()", depending on what kind of file you're dealing with.