Я думаю, что это довольно просто. Моя программа создаст файл Excel на сервере с помощью Automation. После этого я хочу заставить пользователя выбрать, загружать ли его или нет, тогда, независимо от выбора, удалите файл, чтобы он не просто занимал место. Любые идеи о том, как я могу это сделать?Удалить файл после загрузки пользователем подсказки
ответ
Вы можете прочитать файл во входном буфере, а затем удалить файл и отправить буфер пользователю вместо фактического файла.
Трудно узнать, когда пользователь действительно закончил загрузку файла, и вы не хотите его удалять, поэтому я советую удалить файлы старше определенного времени, например> 24 ч.
Трудно определить, закончил ли пользователь загрузку файла, так как браузер не передает эту информацию, кроме того, что пакет обнюхивает сетевые данные и подробно настраивает ваш веб-сервер для управления открытыми подключениями и, фактически, полагает, что это не будет ошибок, нет простого способа.
Это также зависит от того, как вы читаете файл и его фактический размер, например, по очереди, чтобы выводить в браузер, будет экономить память, но это сделает код зависимым от существования файла, содержимое файла для какого-то буфера позволит веб-серверу хорошо, обслуживать его, но в зависимости от количества посетителей, размера файла и средней скорости загрузки у вас может быть в любой момент веб-сервер с десятками файлов GB в памяти.
Простое время для хранения данных на несколько дней и удаления файлов.
Предположим, у меня нет доступа к серверу, на котором он будет работать. Как написать код для удаления файлов старше 24 часов и как я планирую его запустить? Любые идеи были бы полезны, так как я предпочел бы пойти по этому пути. –
Действительно хороший способ, в вашем global.asax
Я думаю, SO использует что-то подобное, хотя я забываю за то, что ... (уверен, что я украл этот код от них)
private static CacheItemRemovedCallback OnCacheRemove = null;
private void AddTask(string name, int seconds)
{
OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
HttpRuntime.Cache.Insert(name, seconds, null, DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, OnCacheRemove);
}
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
// delete old spreadsheets every hour
AddTask("DeleteDayOldSpreadsheets", 3600);
}
public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
{
// do stuff here
switch (k)
{
case "DeleteDayOldSpreadsheets":
// TODO: add your magic DELETE OLD SPREADSHEET code here
break;
default:
break;
}
// re-add our task so it recurs
AddTask(k, Convert.ToInt32(v));
}
Как указано в Microsoft KB 257757, Microsoft рекомендует не использовать автоматизацию на сервере:
" Microsoft в настоящее время не рекомендуется, и не поддерживает, автоматизации приложений Microsoft Office из любого без присмотра, не интерактивного клиентского приложения lication или компонент (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может проявлять нестабильное поведение и/или тупик, когда Office запущен в этой среде. "
и другие третьи сторонние библиотеки могут сделать это, и они будут быстрее, а также более надежной SpreadsheetGear поддерживает запись непосредственно в выходной поток, поэтому у вас нет необходимости создавать временный файл на диске -. Дает лучшую производительность и не не беспокоиться об очистке влево-над файлами.
вы можете увидеть образцы ASP.NET Excel Создание отчетов с помощью C# и источник VB here и скачать бесплатную пробную версию here если вы хотите попробовать это для себя.
Отказ от ответственности: У меня есть SpreadsheetGear LLC
Я знаю, что вопрос когда-то спросил, но подумал, что этот совет будет полезен.
Ниже приведен код C#, который делает трюк.
Для дополнительной информации я указал ссылку, где я нашел оригинальную идею. Это было полезно для меня.
private void DownloadFile()
{
Response.ContentType = ContentType;
Response.AppendHeader("Content-Disposition", "attachment; filename=myFile.txt");
Response.WriteFile(Server.MapPath("~/uploads/myFile.txt"));
Response.Flush();
// Delete the file just before execute Response.End()
System.IO.File.Delete(Server.MapPath("~/uploads/myFile.txt"));
Response.End();
}
- 1. Удалить файл после загрузки
- 2. Flask - удалить файл после загрузки
- 3. Удалить файл после загрузки - PHP
- 4. Удалить файл автоматически после загрузки
- 5. PHP - удалить файл после загрузки
- 6. Удалить zip-файл после загрузки в zf2
- 7. Не удается удалить файл после загрузки
- 8. Как удалить файл из каталога после загрузки?
- 9. Windows Batch Удалить Локальный файл после загрузки
- 10. Удалить файл после успешной загрузки на S3
- 11. Как удалить файл после загрузки в C#?
- 12. Как удалить файл после загрузки с помощью ASP.NET MVC?
- 13. Как показать отдельные подсказки после загрузки диаграммы?
- 14. Инициализировать всплывающие подсказки после загрузки вида
- 15. Phpexcel как удалить после загрузки?
- 16. Удалите файл после загрузки с помощью nodejs
- 17. Пустой файл после загрузки
- 18. удалите файл с сервера после завершения загрузки
- 19. Django StreamingHttpResponse удаление файла после завершения загрузки пользователем
- 20. Удалить scrolll после загрузки страницы
- 21. удалить переменную после загрузки страницы
- 22. Удалить файл после загрузки на ftp в Apache Camel
- 23. Как удалить файл и изображение после загрузки с Codeigniter?
- 24. Как удалить файл после загрузки в ASP.net FileUpload Control
- 25. скачать файл с удаленного сервера и удалить после полной загрузки
- 26. Как удалить файл после загрузки с помощью Struts 2?
- 27. Как удалить файл изображения после загрузки в C#?
- 28. Удалить файл после загрузки с помощью ответа Cakephp
- 29. Не удается удалить локальный файл после загрузки в Chrome
- 30. Golang Как удалить сгенерированный zip-файл после завершения загрузки пользователя?
и может PLS отправлять образцы кода ..? – shashwat