ASP.NET 在下載文件時(shí)對(duì)其重命名的思路及實(shí)現(xiàn)方法
更新時(shí)間:2013年06月05日 11:06:05 作者:
ASP.NET 在下載文件時(shí)對(duì)其重命名的思路及實(shí)現(xiàn)方法,需要的朋友可以參考一下
有些時(shí)候?yàn)榱吮WC文件再上傳時(shí)不會(huì)覆蓋掉之前上傳的文件,同時(shí)由于上傳的目標(biāo)目錄里的文件可能很多,這個(gè)時(shí)候一個(gè)一個(gè)查是不太好的事情,所以這里可以自動(dòng)生成GUID使文件名重命名成GUID_原來(lái)的名稱(chēng).擴(kuò)展名。但是在下載的時(shí)候最好可能保證恢復(fù)到原來(lái)的名稱(chēng)。這個(gè)時(shí)候聽(tīng)傷神的。搜了一下相關(guān)資料后得知可使用response來(lái)解決。具體代碼如下。
[csharp]
<pre name="code" class="csharp">string path = Server.MapPath("aa\\ahaakladahsasdas_bb.zip");
string newfileName = "";
if (File.Exists(path))
{
FileInfo fi = new FileInfo(path);
Response.Clear();//Clear 方法刪除緩沖區(qū)中的所有 HTML 輸出。但 Clear 方法只刪除響應(yīng)正文
//而不刪除響應(yīng)標(biāo)題??梢杂迷摲椒ㄌ幚礤e(cuò)誤情況。
Response.ClearHeaders();
Response.Buffer = false;//這句話(huà)的意思就是指明輸出頁(yè)面是否被緩沖,當(dāng)屬性值為T(mén)rue時(shí),
//服務(wù)器將不會(huì)向客戶(hù)端發(fā)送任何信息,直到所有程序執(zhí)行完或者遇到
//Response.Flush或Response.End語(yǔ)句,才會(huì)釋放緩沖區(qū)的信息。
string filename = Path.GetFileName(path);
newfileName = newfileName + filename.Substring(filename.LastIndexOf("."));
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
newfileName = HttpUtility.UrlEncode(newfileName);// 這一步彈出下載保存的對(duì)話(huà)框,出現(xiàn)文件名亂碼,但變量中的文件名是正常的。
Response.AppendHeader("Content-Disposition", "attachment;filename=" + newfileName);//為用戶(hù)保存文件是顯示的名稱(chēng)
//告訴客戶(hù)端這個(gè)響應(yīng)內(nèi)容的類(lèi)型為attachment 你是通過(guò)Response.AppendHeader("content-type", "attachment"); 申明的。
Response.AppendHeader("Content-Length", fi.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(newfileName);//用response來(lái)返回文件的路徑
Response.Flush();//清空response
Response.End();
//Response.End(); 如果拋異常的話(huà)可使用
//HttpContext.Current.ApplicationInstance.CompleteRequest();
}
else
{
Response.Write("<script langauge=javascript>alert(‘文件不存在!');</script>");
}
</pre><br>
<br>
<pre></pre>
<p></p>
<pre></pre>
<p></p>
<pre></pre>
[csharp]
復(fù)制代碼 代碼如下:
<pre name="code" class="csharp">string path = Server.MapPath("aa\\ahaakladahsasdas_bb.zip");
string newfileName = "";
if (File.Exists(path))
{
FileInfo fi = new FileInfo(path);
Response.Clear();//Clear 方法刪除緩沖區(qū)中的所有 HTML 輸出。但 Clear 方法只刪除響應(yīng)正文
//而不刪除響應(yīng)標(biāo)題??梢杂迷摲椒ㄌ幚礤e(cuò)誤情況。
Response.ClearHeaders();
Response.Buffer = false;//這句話(huà)的意思就是指明輸出頁(yè)面是否被緩沖,當(dāng)屬性值為T(mén)rue時(shí),
//服務(wù)器將不會(huì)向客戶(hù)端發(fā)送任何信息,直到所有程序執(zhí)行完或者遇到
//Response.Flush或Response.End語(yǔ)句,才會(huì)釋放緩沖區(qū)的信息。
string filename = Path.GetFileName(path);
newfileName = newfileName + filename.Substring(filename.LastIndexOf("."));
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
newfileName = HttpUtility.UrlEncode(newfileName);// 這一步彈出下載保存的對(duì)話(huà)框,出現(xiàn)文件名亂碼,但變量中的文件名是正常的。
Response.AppendHeader("Content-Disposition", "attachment;filename=" + newfileName);//為用戶(hù)保存文件是顯示的名稱(chēng)
//告訴客戶(hù)端這個(gè)響應(yīng)內(nèi)容的類(lèi)型為attachment 你是通過(guò)Response.AppendHeader("content-type", "attachment"); 申明的。
Response.AppendHeader("Content-Length", fi.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(newfileName);//用response來(lái)返回文件的路徑
Response.Flush();//清空response
Response.End();
//Response.End(); 如果拋異常的話(huà)可使用
//HttpContext.Current.ApplicationInstance.CompleteRequest();
}
else
{
Response.Write("<script langauge=javascript>alert(‘文件不存在!');</script>");
}
</pre><br>
<br>
<pre></pre>
<p></p>
<pre></pre>
<p></p>
<pre></pre>
您可能感興趣的文章:
- Asp.net實(shí)現(xiàn)MVC處理文件的上傳下載功能實(shí)例教程
- ASP.NET Core實(shí)現(xiàn)文件上傳和下載
- ASP.NET?Core實(shí)現(xiàn)動(dòng)態(tài)獲取文件并下載
- asp.net實(shí)現(xiàn)多個(gè)文件同時(shí)下載功能
- ASP.NET實(shí)現(xiàn)從服務(wù)器下載文件問(wèn)題處理
- asp.net實(shí)現(xiàn)服務(wù)器文件下載到本地的方法
- ASP.Net下載大文件的實(shí)現(xiàn)方法
- asp.net中文件下載功能的實(shí)例代碼
- 在A(yíng)SP.NET中下載文件的實(shí)現(xiàn)代碼
- asp.net 文件下載實(shí)現(xiàn)代碼
- ASP.NET MVC實(shí)現(xiàn)文件下載
相關(guān)文章
javascript判斷是否有對(duì)RadioButtonList選項(xiàng)選擇
寫(xiě)個(gè)Javascript來(lái)判斷是否有對(duì)RadioButtonList選項(xiàng)選擇,附動(dòng)畫(huà)演示,感興趣的朋友可以了解下,希望對(duì)您們有幫助2013-01-01使用HttpClient增刪改查ASP.NET Web API服務(wù)
這篇文章介紹了使用HttpClient增刪改查ASP.NET Web API服務(wù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10使用.Net Core編寫(xiě)命令行工具(CLI)的方法
這篇文章主要介紹了使用.Net Core編寫(xiě)命令行工具(CLI)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03.Net Core3.0 配置Configuration的實(shí)現(xiàn)
這篇文章主要介紹了.Net Core3.0 配置Configuration的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10asp.net使用WebAPI和EF框架結(jié)合實(shí)現(xiàn)數(shù)據(jù)的基本操作
這篇文章介紹了asp.net使用WebAPI和EF框架結(jié)合實(shí)現(xiàn)數(shù)據(jù)基本操作的案例,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04