sharepoint 中用自带的download.aspx实现文件的下载,中文文件名编码的问题

 
  
//下面代码中的主要是为了将数据绑定到repeater上,同时实现文件的下载,其中dr[3]中的路径绑定的是下载路径,用到了sharepoint中自带的download.aspx下载页面,只要将文件的URL赋值给sourceurl即可,但是我前台用的是<a>标签的href来导向下载页面的,如果你的文件名是中文命名,而且路径是在后台传的值,在前台的进行的链接,那么如果你用的是IE浏览器,那么下载时就无法成功,因为IE无法将路径进行编码,下载页面无法识别中文名,所以这时就必须先编码再链接,如下面的带有下滑线的代码,就是编码的过程。
 
  
if (files != null)
            {
                foreach (SPFile file in files)
                {
                    DataRow dr = dt.NewRow();
                    if (file.Item["IsShow"].ToString() == "True"&&file.Item["_ModerationStatus"].ToString() == "0")
                    {


                        dr[0] = "_layouts/images/" + file.IconUrl;
                        dr[1] = file.Name;
                        dr[2] = BussinessUtil.getDownloadType(file);
                        string fileUrl = file.Url;
                        string sourceUrl = fileUrl.Substring(0, fileUrl.LastIndexOf("/")+1) + HttpUtility.UrlEncode(fileUrl.Substring(fileUrl.LastIndexOf("/") + 1));//主要是对中文路径编码
                        dr[3] = SPContext.Current.Web.Url + "/_layouts/15/download.aspx?sourceurl=" + sourceUrl;
                        dr[4] = file.TimeCreated.ToShortDateString();
                        dr[5] = file.UniqueId;
                        dt.Rows.Add(dr);

                    }

                }
            }

希望对您有所帮助!

转载于:https://www.cnblogs.com/lzqs/p/3506151.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是用C#编写的用于下载文件SharePoint代码: ```csharp using System; using System.IO; using Microsoft.SharePoint.Client; namespace SharePointDownloader { class Program { static void Main(string[] args) { string siteUrl = "https://your-sharepoint-site-url"; string filePath = "Shared Documents/FileName.txt"; string savePath = @"C:\Downloads\"; using (ClientContext clientContext = new ClientContext(siteUrl)) { // 设置凭据 clientContext.Credentials = new System.Net.NetworkCredential("username", "password"); // 获取文件 FileInformation fileInformation = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, filePath); // 构建本地保存路径 string localFilePath = Path.Combine(savePath, Path.GetFileName(filePath)); using (FileStream fileStream = new FileStream(localFilePath, FileMode.Create)) { // 下载文件 fileInformation.Stream.CopyTo(fileStream); Console.WriteLine("文件成功下载至:" + localFilePath); } } } } } ``` 上述代码使用了SharePoint的客户端对象模型(Client Object Model)来进行文件下载。首先需要提供SharePoint网站的URL、要下载文件路径和要保存的本地路径。然后,使用`ClientContext`创建一个与SharePoint网站的连接,并设置凭据来进行身份验证。 接下来,使用`File.OpenBinaryDirect`方法打开要下载文件,并获取文件的信息。然后,根据提供的本地保存路径,使用`FileStream`在本地创建一个文件流。最后,利用文件流的`CopyTo`方法将从SharePoint下载文件流写入到本地文件流中,实现文件下载。 在代码中可以替换以下的参数来满足您的实际需求: - `siteUrl`:SharePoint网站的URL。 - `filePath`:要下载文件SharePoint中的路径。 - `savePath`:要保存的本地路径。 - `username`和`password`:进行身份验证的用户名和密码。 请注意,为了使用SharePoint的客户端对象模型,您需要在项目中引用`Microsoft.SharePoint.Client`和`Microsoft.SharePoint.Client.Runtime`的程序集,并添加相应的命名空间引用。 希望以上回答对您有所帮助,如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值