Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I need to set something up on our company website so that customers can log in and upload art files (we're a printing company). What I'd like to see is something that after logging in the customer would be directed to a page that shows other files they have uploaded and files that we have available for them to download.

The tricky part is that the website is hosted commercially (powweb.com), but the art files need to end up on our ftp server, which is inside our firewall (with outside access.) The site is strictly static html with no content management system in use; very basic. What's the best/easiest way to accomplish this without the process getting too expensive? Anybody know of any open source or commercial packages that would allow this to happen?

It probably goes without saying that I'm not a web programmer; I know enough to be dangerous, but am willing to dig in & learn what needs to be done. We were planning to revamp the website at some point this year, and if using a content manager would help in this I'm totally open to that.

Thanks!

share|improve this question
    
How fast do you need to have the data on your ftp-server? Immediately, every ten minutes, once every hour? –  Ludwig Weinzierl May 30 '09 at 13:33
add comment

5 Answers

up vote 2 down vote accepted

Step 1 Securely configure the hosting web server to have a "staging" directory, which will hold the clients' uploaded files until you can retrieve them.

Step 2 Write a cron job on the internal FTP server that goes to the web server and retrieves the downloaded messages.

I assume that you've got somewhat limited space on the web server, so I would recommend deleting them from there after you've verified that you successfully downloaded the files. If you have shell access on the web server, you can use the md5 hashes to verify correctness. If not, you may just have to go with size.

My company uses a technique like this. We have a process that runs every 5 minutes of every day that retrieves files, verifies them, then deletes them from the source. It works quite well for us.

share|improve this answer
    
I think this would work for us. One thing I alluded to but failed to mention was that one customer's files need to be kept private from the other customers. But with only a couple dozen customers that will be using this setup, that requirement shouldn't add too much to the job. Thanks, Matt! –  Dave Jun 1 '09 at 13:32
add comment

It depends how fast you need the files on your in-house server.

Sync-Solution

If it does not need to be realtime then let people upload to and download from your webhost and synchronize every n minutes. There are various solutions for the synchronization part but I'd recommend rsync.

Realtime solution

If it needs to be real time you can run a webserver on your in-house host which just provides the upload part. It can live on a subdomain like upload.mycompany.com. If you do it properly users will not notice that it is hosted on a different server. Running a publicly available webserver is not for the faint-hearted however, and it will take a considerable amount of time for maintenance.

The upload/download part

Writing the code to upload a file to a webserver is a no-brainer for everyone who has been involved in programming. Doing so in a secure, reliable, scalable and efficient way is not. Even if it is implied in your question that you are willing to learn all that is needed you should consider to outsource at least this part of your task.

share|improve this answer
    
I disagree about the rsync comment. rsync is absolutely real synchronization, it's just one-way synchronization. –  Matt Simmons May 30 '09 at 14:23
    
Removed the comment about synchronization. I think that rsync is perfectly suitable for the job. –  Ludwig Weinzierl May 30 '09 at 17:38
add comment

I would set up a secure folder on the web host that is a distributed file system that you are hosting on your internal network that your webhost connects to or on the web host connected to by your file server.

With your current setup you should be able to use your existing setup. There are ways to mount ftp as a drive or folder in a variety of operating systems. If your web host cannot set up a folder that is actually a connection to your ftp server as a folder, then it is possible to set up a folder/drive on your ftp server that connects to your webhost's ftp.

Working with just ftp there are some potential security and read speed issues. As long as sufficient encryption, access control on the folders, and content filters for malicious files are in place you should be fine.

This method will have read delays if the webhost is connecting to your ftp to put files unless you include some sort of scripting that puts one copie localy on the web host and one copy into the shared folder.

share|improve this answer
add comment

Not exactly what you're after, but you might consider using JungleDisk hooked up to Amazon S3. Amazon S3 is a cloud-based file storage system, and Jungle Disk is a Windows/Mac program that you use to access the files. Amazon S3 charges by the transfer and by storage volume, and Jungle Disk is a flat $20 one-time fee. The S3 pricing is really reasonable, downright cheap.

You can install Jungle Disk as a service on a machine inside your office network, and it will automatically sync content with your S3 bucket. When clients upload to S3, you'll fetch those files automatically to your local server, and vice versa - when you put files in that synchronized folder structure, they go up to S3 also.

You can set up one bucket (similar to a folder) per client, and each client can get access to just their own files in their bucket. There's no programming involved.

share|improve this answer
add comment

Your best bet is to use your ftp server. This isn't the most user friendly solution but put up an FAQ and tutorial showing people how to zip and ftp their files. Every OS under the sun has a built-in ftp client. There are even some good open source FTP clients a la Filezilla.

Every other viable solution requires your company to spend money. With your current host you are going to be limited on the file sizes you can accept. Search their forums for file size and/or execution timeout.

share|improve this answer
    
We've been using the ftp option for some time, and I don't see any issues that keep it from remaining a viable option... But other print vendors offer web-based file uploads and this is what our customers have come to expect. –  Dave Jun 1 '09 at 13:35
    
Do you have hard numbers on how many customers have requested this? If you do you might be able to use those numbers to justify spending some money to upgrade your hosting. I am assuming that you are using shared hosting at this point. If that is not the case you can disregard this. –  sdanelson Jun 7 '09 at 13:09
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.