FileUp Enterprise
SoftArtisans FileUpEE V4:
The Best of the Best
By Justin Thomas
April 3, 2003
With file transfers becoming increasingly sensitive and critical
it has become crucial to handle the movement of data with extreme
precision.
With its unprecedented server-to-server technology, SoftArtisans
FileUp Enterprise Edition (FileUpEE) is my knight in shining
armor. This product is not for your day-to-day image uploads
- although it could be used for such - it has been built to
handle documents that need to be pushed to your file server
and allow a user to securely upload gigabytes of data. But
don't be quick to shy away, SoftArtisans also makes a standard
version of FileUp to handle those everyday small uploads that
are not as critical.
Uploading files from a browser has come along way since its
inception, and in my opinion, still does need some work on
the browser end. Thankfully there are companies, like SoftArtisans,
that help us overcome the limitations in our browsers. In FileUpEE,
SoftArtisans has, indeed, created an upload product that has
surpassed, by far, any other upload components on the market
today.
Installation
For this review, I put together a system that I thought would
be very reasonable to most of our readers and admittedly a
little too much for some.
A four Web server cluster was used in conjunction with a single
file server. Each Web server was composed of dual 1.4 GHz P3
processors with one gigabyte of RAM running on Windows 2000
Advanced Server. The file server was composed of the same except
the operating system was Windows 2000 Server.
The download and install were pretty standard...actually the
process was simple and very straightforward. There is a nice
and precise setup that comes with FileUpEE; all you need to
do is specify whether you are installing it on the Web server
or file server. (If installing in a clustered environment,
FileUpEE has to be on each member in your farm.) You also have
the option to set this up manually, which I didn't. The documentation
explains very clearly how this is done.
I had no issues when installing this product - uneventful,
I know, but this is good.
Easy to Use and Configure
Configuration is very straightforward and all of the set-up
information can be found in the well-written documentation.
The resume method requires an Access database on the Web server
and the file server (SoftArtisans also provides a script to
create the required database in SQL Server). You can easily
supply the connection string in your code or create two .udl
(Universal Data Link) files, one each on the Web server and
one on the file server.
IUSR_MACHINENAME will, of course, need Read, Write and Modify
permissions set on the temporary directory and any other directories
you wish to upload to. If you have ever created an upload application
you know that this is standard.
We briefly just talked about a temporary directory. When a
file is uploaded to the server it is first cached into a temporary
directory that is usually specified (by default) with the system
environment variable TEMP. When a file is uploaded to your
server this process is also true. With FileUpEE, you can change
the location for your temporary uploads by setting the TempStorageLocation(server)
to the directory you wish the files to be cached to. However,
if you wish, you can also set UseMemory to true to skip this
process and cache the files in memory rather than to your hard
drive (this is fine for small files).
I would like to point out that for the highest possible security,
a request could be streamed through the Web server so that
the complete file contents are never on the Web server - neither
on disk nor in memory. As a chunk is read from the client,
it is written to the file server. However, there is a drawback
to this approach because the Web server code cannot get any
information about the request. The request is forwarded "as
is" to the file server and all logic must be on the file server.
Getting Started
Having it installed and configured, I jumped right into the
samples and started making myself useful. With FileUpEE, at
this point, just looking like a pumped-up version of FileUp
Standard Edition, I skipped right past the basics and jumped
into the 3-tier uploads and the progress indicator. First thing
I wanted to do was create a progress bar-showing the progress
of an upload. In my opinion, this feature is just fantastic.
After reading the documentation and browsing through their
samples, I had a 3-tier (client > Web server > file server)
upload with a progress bar, that watches both the client-to-Web
server and the Web server-to-file server uploads, completed
in under an hour. This is very impressive.
Uploading to a database was just as easy. With easy-to-set
properties, sending my file to SQL Server has never been easier.
So, all-in-all, uploading was quick and easy - virtually automated.
Not much extra work had to be done on the file server to handle
a 3-tier upload -just a small, simple script to process the
request coming in.
In addition to all the basic properties and methods any traditional
file upload component can do, FileUpEE comes with a wealth
of even more sophisticated routines that will tailor to your
specific guidelines. Below are just a select few that stand
out to me.
Log file transfers to a database. Built-in logging
provides great information on what users are uploading, as
well as any errors that might have occurred that you were not
notified about.
Adjustable Timeouts. Modems, with poor connection speed,
are still widely used throughout the world. Therefore, the
large uploads over these modems will eventually timeout. If
FileUpEE's DynamicAdjustScriptTimeout property is set to True,
the IIS ScriptTimeout value will increase automatically, as
long as new data is coming in from the browser. A very nice
touch!
Backwards Compatibility. If you currently use FileUp
Standard Edition and do not wish to re-write your existing
code, but would like to send your data over to a file server,
setting FileUpCompat to True will let you re-use your code
on your file server. However there is no support for this in
ASP.NET and both FileUpEE and FileUp Standard Edition cannot
run side-by-side on the same machine.
Validating data for corruption. When a file is transferred
from one server to another it can get corrupted. You can set
the UseChecksum and use the ValidateChecksums method to ensure
data integrity, which is a critical need when uploading any
form of data. For this, FileUpEE uses MD5 (Message Digest 5)
hashing - think of this as a fingerprint. Each person has a
unique set of fingerprints that can be used as identification.
Files are, in a sense, the same way. MD5 hashing will extract
this unique fingerprint and if the file has changed the checksum
it will have also changed.
While there is still an abundance of optional configurations
you can use, so far FileUpEE has exceeded my expectations.
But we are not done yet.
Putting FileUpEE to the Test
I wanted to find out just how well FileUpEE could hold up
to a serious beating so I cloned a real-world scenario.
My test was simple, but demanding. I wanted to push FileUpEE
for 48 hours, uploading multiple files in different formats
and all shapes and sizes. So I created a simple process that
simulated opening a browser using different logins and uploading
files out of a specified directory. These files ranged from
simple 2-byte text files to large 100 mb zip files.
Each upload was different. Some 'users' would upload only
one small Word document and others would upload multiple files
in a broad range of formats. Each time it hit the file server
a process would record each file(s) integrity to my SQL Server
database by using ValidateChecksums found in FileUpEE.
How did it hold up? In a 48-hour time period approximately
1,072 files were uploaded. Server and memory performance were
peaking at times, but not more than an average day of hitting
the servers. The test had shown that only one file was corrupt,
a zip file in fact. And with further examination I found out
that this was not due to FileUpEE, but instead it was due to
the Zip component that I was using to zip up the files before
being sent out.
This test was a definite success. Let's look at peak uploads
that had occurred within this test. Below you will find the
different types of files and amount of files uploaded during
the test.
| File Type |
Total |
| All |
1,072 |
| Archives |
349 |
| Text |
103 |
| Image |
440 |
| Native Image |
21 |
| Executable |
61 |
| Office |
98 |
Number of files uploaded at a given time: 57
So on average, 22 files were uploaded every hour for 48 hours.
Archives. An archive file can be different forms of
compressed data. I used two types of archived files: RAR and
ZIP files.
Text. In this test, "text" meant a standard .txt file
and .rtf (Rich Text Format), along with html and xml.
Image. Gif, jpeg and png images were used in this test.
Native Image. A native image format like Adobe Photoshop's
PSD, Adobe Illustrator, Macromedia Flash and Freehand files
were also used.
Executable. No one wants to upload executable files,
but in some cases you must. The types of files were script
and .exe application code.
Office. Word (.doc), PowerPoint (.ppt), and Excel (.xls)
files were uploaded.
Security
When examining this product I found no major security issues
that I would be concerned about. In fact, if you like, you
can set (for ASP.NET) an impersonation setting in your. config
file, which will execute using the IUSR_MACHINENAME or the
user you specify. I found this feature to be very exhilarating.
Although I am one to worry a tad too much about my Web servers'
security this little setting helps me cope with my worries.
Since your file server is "hidden" from the public, file transfers
over to the file server are secure and, by default, are usually
sent as an attachment to a SOAP (Simple Object Access Protocol)
request envelope. This is very different than conventional
methods of getting documents over to your file server, specifically
FTP. FileUpEE, in my opinion, can and will be a direct replacement
for FTP.
Why have we used FTP in the past? The answer is simple; a
user can upload multiple files with the click of a button.
Large files can be handled with ease and you can resume transfers
that were lost. The list can go on. FileUpEE can do all of
this and more. Imagine not having to setup accounts for users
to login in with FTP, monitoring it, configuring permissions
(which we all know can be very time consuming) not to mention
the maintenance of it all.
FileUpEE also supports SSL (HTTPS) data encryption.
Fact or Fiction?
Can FileUpEE really handle over 100 gigabytes of data? Well...I
don't know for sure, but I would not doubt for one second that
it couldn't.
Backing up local machines can be a pain-staking process some
of us would not like to do. With FileUpEE, I could write an
application that lets users on our intranet send very large
presentation documents, documentation, image libraries and
more to our file server without any intervention. I could also
create a spider to go around and zip up their important documents
and upload them onto the servers.
Lots of Goodies
While FileUpEE has, at this point, been another excellent
product by SoftArtisans, I am going to add a little more frosting
to the cake. Included in FileUpEE are XFile and JFile, two
SoftArtisans client-side products you can use to add rich-client
uploading to your application.
XFile is an ActiveX control that enables us to add enhanced
uploading features not available from traditional server-side
coding methods. This control has a number of features such
as:
Drag-and-Drop. While you can just as easily select
multiple files to upload, you can also drag files over from
Windows Explorer on to the control to upload.
Progress Indicator. Comes with a real-time progress
indicator that shows upload speed, overall upload status and
single file upload status.
Unicode Compliant. Support is available for non-English
file names. This is a very nice feature when your company needs
to upload files from multiple locations in different countries
where the language is not always English.
XFile also comes with two more "bonus" tools: SoftArtisans
FileManager and SoftArtisans Archive.
When using XFile, I did notice that the "estimated" time was
indeed off. I realize it is estimated, but I think it could
be improved. Considering the fact when I used the XFile sample
I was on the local network and was transferring about 3300kb
a second it said a 15mb file would take 8 minutes and 37 seconds
when it actually took only about 4 seconds. The time sounds
about right if I were on a standard DSL or cable connection
over the Internet, but I was on a direct line.
JFile is another client-side control, but instead of being
an ActiveX Control, it is a Java Applet. Any Java-enabled browser
can use JFile. While it supports most of the same features
as XFile, JFile does not support drag-and-drop. It is fully
scriptable through client-side JavaScript.
While this review is not intended to focus on these two products,
I recommend you visit http://fileup.softartisans.com and
check out all the neat features their products have to offer.
As you can see, FileUpEE has more than enough to handle virtually
any part of your file transfer needs within your application.
Downloading
FileUpEE does support 2 and 3-tier file downloads. The 2-tier
download is very basic, and although it is good to have, it
is not anything I can see being used. However, the 3-tier (file
server - Web server - client) download is great, lacking only
the feature of downloading multiple files, which would be a
great addition in future versions.
The Servers Used
5 Dell PowerEdge 1650 1U's
Dual 1.4 GHz P3 Processors
One Gigabyte of RAM
Windows 2000 (Advanced) Server
Conclusion
Overall, each product bundled with the purchase of FileUpEE
was very easy to understand and I was able to start integrating
them into new applications right away. If you have already
used SoftArtisans FileUp Standard Edition or any other upload
component, then you will find FileUpEE to be very straightforward
and you too can start using it with minimal effort.
Documentation of the product is very clean and easy to understand.
I had no problems getting any of the samples to run and I thought
the samples did an excellent job demonstrating the product's
capabilities without overwhelming me with complexity or, better
yet, insulting my intelligence like documentation can do some
times. The documentation is very good, with either HTML documentation
or .chm (Compiled Help Manual) reference to FileUpEE and its
other components like the XFile and JFile. Once you purchase
FileUpEE you will get an email with a user name and password
that you can use to login to SoftArtisans Web site and download
the product. The download size is only 17.1mb. This, in my
opinion, is not bad at all. For an extra $20 (US) or $30 (Outside
the US) you can have it shipped to you on a disk. For pricing
and licensing options you will need to contact the sales department
at SoftArtisans.
So to wrap up in a nutshell, SoftArtisans FileUpEE is the
best-of-the-best when it comes to file uploading.
About the Author
Justin Thomas is an Applications Developer for ZAAZ, Inc.
residing in Seattle, Washington. He has over eight years of
experience in a vast array of programming languages and technologies.
You can email Justin at justint@zaaz.com. |