开发者

Code to download file from sharepoint 2007 document library. Please correct me in this code

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜