Il s'avère que lors du développement de notre projet (les fichiers sont stockés dans la base de données), les fichiers téléchargés sont écrits sous forme d'en-têtes http. Comme suit Response.Clear();
Réponse.Buffer = false ;
Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(fileWJNR.Rows[0]["WJM"].ToString(),System.Text.Encoding.UTF8));
Response.BinaryWrite (flux d'octets);
Response.End();
Cependant, une fois le projet déployé, lorsque l'utilisateur navigue dans IE6.0, il sera intercepté, fermé et quitté. A cette époque, mon collègue utilisait un formulaire pop-up, puis « cliquez pour télécharger » dans le formulaire pop-up, afin qu'il ne soit pas intercepté.
J'ai essayé une solution plus directe, qui consiste à générer d'abord un fichier temporaire en cliquant, puis à créer un lien vers le fichier temporaire, c'est-à-dire qu'une boîte de dialogue de téléchargement ou d'ouverture de fichier apparaîtra. Le code est très simple :
string fileName = "file name" //utiliser l'identifiant du fichier
chaîne tempFilePath = Request.PhysicalPath ;
tempFilePath = tempFilePath.Substring(0,tempFilePath.LastIndexOf("\"));
tempFilePath += " \temp\ " + nomfichier ;
(
tempFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
{
byte[] docBody = (byte[])fileWJNR.Rows[0]["WJNR"] //Conversion
fichier.Write(docBody, 0, docBody.Length);
fichier.Close();
Réponse.Redirect("temp\" + fileName);
}
attraper
{
fichier.Close();
}