I am using this code to download file on button click. Code works perfectly but only one problem exists that code executes perfectly only for first time, means for first when I click on download button file gets downloaded but when I click on download button second time nothing happens. So to execute code again I need to do page refresh(i.e F5) once refresh is done then again code execute perfectly but only for first click Please correct me what I am doing wrong in this code so that code would work perfectly
try
{
int flag=0;
SPSite site = new SPS开发者_运维百科ite(sharePointURL);
SPWeb web = site.OpenWeb();
web.AllowUnsafeUpdates=true;
string strContentType="";
// docLib is the name of document library
SPFolder folder = web.GetFolder("docLib");
SPFileCollection files=folder.Files;
//"docLib" is name of document library and testFile.doc is the name of file
string url=sharePointURL+"/"+"docLib"+"/"+"testFile.doc"
SPFile tempFile = web.GetFile(url);
//Get the extension of File.
string []fext=this.filename[0].Split('.');
byte []obj=(byte[])tempFile.OpenBinary();
// Get the extension of File to determine the file type
string casestring="";
if(fext.Length>1)
{
casestring= fext[fext.Length-1];
}
//set the content type of file according to extension
switch(casestring)
{
case "txt":
strContentType = "text/plain";
break;
case "htm" : strContentType = "text/html";
break;
case "html" : strContentType = "text/html";
break;
case "rtf" : strContentType = "text/richtext";
break;
case "jpg" : strContentType = "image/jpeg";
break;
case "jpeg": strContentType = "image/jpeg";
break;
case "gif" : strContentType = "image/gif";
break;
case "bmp" : strContentType = "image/bmp";
break;
case "mpg" : strContentType = "video/mpeg";
break;
case "mpeg": strContentType = "video/mpeg";
break;
case "avi" : strContentType = "video/avi";
break;
case "pdf" : strContentType = "application/pdf";
break;
case "doc" : strContentType = "application/msword";
break;
case "dot": strContentType = "application/msword";
break;
case "csv" : strContentType = "application/vnd.msexcel";
break;
case ".xls": strContentType = "application/vnd.msexcel";
break;
case ".xlt": strContentType = "application/vnd.msexcel";
break;
default : strContentType = "application/octet-stream";
break;
}
Response.ClearContent();
Response.ClearHeaders();
Response.AppendHeader("Content-Disposition", "attachment; filename= "+filename[0]);
Response.ContentType = strContentType;
//Check that the client is connected and has not closed the connection after the request
if(Response.IsClientConnected)
Response.BinaryWrite(obj);
Response.Flush();
Response.Close();
}
catch(Exception ex)
{
}
Thanks Rushikesh
I know what happened, just put below codes in your aspx/ascx javascript head.
<script type="text/javascript">
_spOriginalFormAction = document.forms[0].action;
_spSuppressFormOnSubmitWrapper = true;
</script>
after this,you will be able to download more than once.
精彩评论