Solved

assign .zip file to link

Posted on 2012-03-21
12
348 Views
Last Modified: 2012-04-05
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!!!
0
Comment
Question by:asp_net2
  • 5
  • 5
  • 2
12 Comments
 
LVL 24

Expert Comment

by:alexey_gusev
ID: 37751271
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
 
LVL 18

Expert Comment

by:mgfranz
ID: 37751287
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
 
LVL 4

Author Comment

by:asp_net2
ID: 37752055
@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
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 
LVL 24

Expert Comment

by:alexey_gusev
ID: 37752088
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
 
LVL 4

Author Comment

by:asp_net2
ID: 37752092
@alexey_gusev,

for some reason if I zip the file up I'm not promtped to Open or Save the .zip file.
0
 
LVL 24

Expert Comment

by:alexey_gusev
ID: 37752114
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
 
LVL 4

Author Comment

by:asp_net2
ID: 37752128
@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
 
LVL 4

Author Comment

by:asp_net2
ID: 37752368
@alexey_gusev,

Yes, if I use the IP then it prompts me to Open or Save in both IE and FF.
0
 
LVL 24

Expert Comment

by:alexey_gusev
ID: 37752912
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
 
LVL 4

Author Comment

by:asp_net2
ID: 37752978
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
 
LVL 24

Accepted Solution

by:
alexey_gusev earned 500 total points
ID: 37753248
0
 
LVL 18

Expert Comment

by:mgfranz
ID: 37753948
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

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question