J'ai un site où un utilisateur peut télécharger un fichier. Certains fichiers sont extrêmement volumineux (le plus grand étant de 323 Mo). Lorsque je fais un test pour essayer de télécharger ce fichier, j'obtiens une exception de mémoire insuffisante. Le seul moyen que je connaisse pour télécharger le fichier est le suivant. La raison pour laquelle j'utilise le code ci-dessous est que l'URL est codée et que je ne peux pas laisser l'utilisateur se connecter directement au fichier. Existe-t-il un autre moyen de télécharger ce fichier sans avoir à le lire entièrement dans un tableau d'octets ?
FileStream fs = new FileStream(context.Server.MapPath(url),
FileMode.Open,
FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(context.Server.MapPath(url)).Length;
byte[] bytes = br.ReadBytes((int) numBytes);
string filename = Path.GetFileName(url);
context.Response.Buffer = true;
context.Response.Charset = "";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "application/x-rar-compressed";
context.Response.AddHeader("content-disposition", "attachment;filename=" + filename);
context.Response.BinaryWrite(bytes);
context.Response.Flush();
context.Response.End();