assign .zip file to link

Hello Experts,

I created an ASP.NET application that retrieves a list of printers on a certain network subnet which works fine. I have it setup so when the user clicks on a link it calls a .bat file to execute (install the printer via cmd line). However this will not work with FireFox, Opera, and a few other because of known security risks.

So what I would like to do now is include the .bat file inside of a .zip folder so that when the user clicks on the link that points to \\backup\printerdrivers\HP-LaserJet4250.zip that it will prompt the user to either "Open" or "Save" the file to their desktop. Is this possible and if so how.

I'm using ASP.NET 4.0 and C#.

Thanks in advance!!!
LVL 4
asp_net2Asked:
Who is Participating?
 
alexey_gusevCommented:
what's the difference between linking the bat file and zip? it'll be the same sort of linkage.
just zip your bat file and point to it. you'll be prompted to save it and then do whatever you like
0
 
mgfranzCommented:
The first thing you will have to do is create the .zip file.  This should help;

http://www.gutgames.com/post/Creating-a-Zip-File-in-C.aspx

Check out DotNetZip, http://dotnetzip.codeplex.com/

You can use GZipStream too;

http://forums.asp.net/t/1086292.aspx


public static void Compress(FileInfo fi)
    {
        // Get the stream of the source file.
        using (FileStream inFile = fi.OpenRead())
        {
            // Prevent compressing hidden and already compressed files.
            if ((File.GetAttributes(fi.FullName) & FileAttributes.Hidden)
                    != FileAttributes.Hidden & fi.Extension != ".gz")
            {
                // Create the compressed file.
                using (FileStream outFile = File.Create(fi.FullName + ".gz"))
                {
                    using (GZipStream Compress = new GZipStream(outFile,
                            CompressionMode.Compress))
                    {
                        // Copy the source file into the compression stream.
                        byte[] buffer = new byte[4096];
                        int numRead;
                        while ((numRead = inFile.Read(buffer, 0, buffer.Length)) != 0)
                        {
                            Compress.Write(buffer, 0, numRead);
                        }
                    }
                }
            }
        }

Open in new window


Once the file has been created, linking it should be a no brainer.
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
asp_net2Author Commented:
@mgfranz,

What is the difference from just manually zipping the files up and placing them in the files system for retrieval compared to the code you supplied?

I just need to be able to download the .bat file. Firefox will NOT run scripts from within their browsers for security reasons but IE will. So I thought it would be best to some how provide the user with the option to download the file.

I did include the .bat file into a .zip folder but when I provided the link to click on it did not ask me if I wanted to "Open" or "Save" the file. It appeared to be trying to open the .bat file instead.
0
 
alexey_gusevCommented:
hmm, that's interesting.
is there any setting in FF that prevents files from just simple downloading? imho, the normal behaviour is to start downloading showing the progress in separate Downloads popup.
0
 
asp_net2Author Commented:
@alexey_gusev,

for some reason if I zip the file up I'm not promtped to Open or Save the .zip file.
0
 
alexey_gusevCommented:
can you use linking based on IP address rather than WNet name?
(ie http://1.1.1.1/backup/printerdrivers/HP-LaserJet4250.zip)

just trying to see if it makes any difference. also, have a look at your registry to get default behaviour for "zip" extension
0
 
asp_net2Author Commented:
@alexey_gusev,

Let me try this solution to see if IP link works. I'm currently using \\backup\printerdrivers\HP-LaserJet4250.zip.

Stand by :)
0
 
asp_net2Author Commented:
@alexey_gusev,

Yes, if I use the IP then it prompts me to Open or Save in both IE and FF.
0
 
alexey_gusevCommented:
ok, ip or hostname, it seems that the browser treats it as URI and offers you to save it, while network path is interpreted as 'command line' sort of thing.

alternatively, you probably could register your own custom scheme (like http) but it's too much hassle I reckon.
0
 
asp_net2Author Commented:
How would I do what you mentioned below?

>> alternatively, you probably could register your own custom scheme (like http) but it's too much hassle I reckon.
0
 
mgfranzCommented:
Check the MIME types that your host allows, if it does not allow .zip files to be sent you will get the kinds of issues you are running into.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.