• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 361
  • Last Modified:

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!!!
0
asp_net2
Asked:
asp_net2
  • 5
  • 5
  • 2
1 Solution
 
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
 
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
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
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

Featured Post

[Webinar] Kill tickets & tabs using PowerShell

Are you tired of cycling through the same browser tabs everyday to close the same repetitive tickets? In this webinar JumpCloud will show how you can leverage RESTful APIs to build your own PowerShell modules to kill tickets & tabs using the PowerShell command Invoke-RestMethod.

  • 5
  • 5
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now