Click here to Skip to main content
15,886,799 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
hi all


why IE(8) show wrong FileName?


ASP.NET
<pre lang="xml"><!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:FileUpload ID="FileUpload1" runat="server" />
            <hr />
            <asp:Button ID="btnEncrypt" Text="Encrypt File" runat="server" OnClick="EncryptFile" />
            <asp:Button ID="btnDecrypt" Text="Decrypt File" runat="server" OnClick="DecryptFile" />
            <br />

            <input type="submit" value="ersal" name="test" />
        </div>
    </form>
</body>
</html>




C#
protected void EncryptFile(object sender, EventArgs e)
   {
       //Get the Input File Name and Extension.
       string fileName = Path.GetFileNameWithoutExtension(FileUpload1.PostedFile.FileName);
       string fileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName);

       //Build the File Path for the original (input) and the encrypted (output) file.
       string input = Server.MapPath("~/Files/") + fileName + fileExtension;
       string output = Server.MapPath("~/Files/") + fileName + "_enc" + fileExtension;

       //Save the Input File, Encrypt it and save the encrypted file in output path.
       FileUpload1.SaveAs(input);
       this.Encrypt(input, output);

       ////Download the Encrypted File.
       Response.ContentType = FileUpload1.PostedFile.ContentType;
       Response.Clear();
       Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(output));
       Response.WriteFile(output);
       Response.Flush();

       //Delete the original (input) and the encrypted (output) file.
       File.Delete(input);
       File.Delete(output);

       Response.End();
   }
   private void Encrypt(string inputFilePath, string outputfilePath)
   {
       string EncryptionKey = "A";
       using (Aes encryptor = Aes.Create())
       {
           Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
           encryptor.Key = pdb.GetBytes(32);
           encryptor.IV = pdb.GetBytes(16);
           using (FileStream fsOutput = new FileStream(outputfilePath, FileMode.Create))
           {
               using (CryptoStream cs = new CryptoStream(fsOutput, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
               {
                   using (FileStream fsInput = new FileStream(inputFilePath, FileMode.Open))
                   {
                       int data;
                       while ((data = fsInput.ReadByte()) != -1)
                       {
                           cs.WriteByte((byte)data);
                       }
                   }
               }
           }
       }
   }


   protected void DecryptFile(object sender, EventArgs e)
   {
       //Get the Input File Name and Extension
       string fileName = Path.GetFileNameWithoutExtension(FileUpload1.PostedFile.FileName);
       string fileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName);

       //Build the File Path for the original (input) and the decrypted (output) file
       string input = Server.MapPath("~/Files/") + fileName + fileExtension;
       string output = Server.MapPath("~/Files/") + fileName + "_dec" + fileExtension;

       //Save the Input File, Decrypt it and save the decrypted file in output path.
       FileUpload1.SaveAs(input);
       this.Decrypt(input, output);

       //Download the Decrypted File.
       Response.Clear();
       Response.ContentType = FileUpload1.PostedFile.ContentType;
       Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(output));
       Response.WriteFile(output,false);

       Response.Flush();

       //Delete the original (input) and the decrypted (output) file.
       File.Delete(input);
       File.Delete(output);

       Response.End();
   }
   private void Decrypt(string inputFilePath, string outputfilePath)
   {
       string EncryptionKey = "A";
       using (Aes encryptor = Aes.Create())
       {
           Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
           encryptor.Key = pdb.GetBytes(32);
           encryptor.IV = pdb.GetBytes(16);
           using (FileStream fsInput = new FileStream(inputFilePath, FileMode.Open))
           {
               using (CryptoStream cs = new CryptoStream(fsInput, encryptor.CreateDecryptor(), CryptoStreamMode.Read))
               {
                   using (FileStream fsOutput = new FileStream(outputfilePath, FileMode.Create))
                   {
                       int data;
                       while ((data = cs.ReadByte()) != -1)
                       {
                           fsOutput.WriteByte((byte)data);
                       }
                   }
               }
           }
       }
   }
Posted
Updated 11-Oct-14 6:08am
v2
Comments
Afzaal Ahmad Zeeshan 11-Oct-14 12:16pm    
I don't get it, which line of code? If the fileName is causing the trouble, then you need to look for the solution in some other line. Because that line won't cause a trouble.
Seyed Ahmad Mirzaee 11-Oct-14 12:23pm    
thanks
trouble Due to IE features!
when i trace in visual all things right
but IE ...
are you run this code in IE8?
ZurdoDev 13-Oct-14 8:33am    
What exactly happens?
Seyed Ahmad Mirzaee 12-Nov-14 13:48pm    
when i choose unicode character for fileName(for example persian character)
this problem occured!

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900