Amy,
This is a sort of "classic" GP Server problem: how can GP Server work with "user supplied data". GP Server can only execute against data that it has access to.
Typically thats either "project" data: data which is essential to the service that the server has access to and doesn't change.
Or user supplied input, generally are simple strings, numbers, or digitized features for example.
In your situation you want to get more complex data / project data / multiple datasets over to the Server for it to crunch.
This is where you have to really define your workflow to achieve desired results.
As I said, Server needs the data to act on, so the problem is how to get the data to the Server. There is no mechanism to pass a "folder" to the Server and say "upload everything in here".
Since you're using Desktop as the client, you can pass a fileto Server. The best way I can think to do this would be to have your user zip up the files on their harddrive, then have the GP Service accept a file input (instead of a folder). Desktop has the ability to send the file to the Server, and the service with a few lines of Python code could unzip the contents of the file to a local directory, perform some operations, then zip up the output.
An alternative approach if your users share a common folder that the Server has access to would be to move their data to this folder manually. Then in the Service they submit the path to the data (as a string), and because the Server has access to that path, it finds the data and crunches it.
I personally like approach #1, but your users, internal network and deployment criteria will determine which method works best for you.
I hope this helps.