【问题标题】:Sharepoint 2010 Upload file using Silverlight 4.0Sharepoint 2010 使用 Silverlight 4.0 上传文件
【发布时间】:2023-04-06 07:06:01
【问题描述】:

我正在尝试将文件从 Silverlight(客户端对象模型)上传到 Sharepoint 2010 库。请参阅下面的代码。

        try{
            context = new ClientContext("http://deepu-pc/");
            web = context.Web;
            context.Load(web);
            OpenFileDialog oFileDialog = new OpenFileDialog();
            oFileDialog.FilterIndex = 1;
            oFileDialog.Multiselect = false;
            if (oFileDialog.ShowDialog().Value == true)
            {
                var localFile = new FileCreationInformation();
                localFile.Content = System.IO.File.ReadAllBytes(oFileDialog.File.FullName);
                localFile.Url = System.IO.Path.GetFileName(oFileDialog.File.Name);
                List docs = web.Lists.GetByTitle("Gallery");
                context.Load(docs);
                File file = docs.RootFolder.Files.Add(localFile);
                context.Load(file);
                context.ExecuteQueryAsync(OnSiteLoadSuccess, OnSiteLoadFailure);
            } 
        }
        catch (Exception exp)
        {
            MessageBox.Show(exp.ToString());
        }

但我收到以下错误

System.Security.SecurityException:不允许文件操作。拒绝访问路径“”。 在 System.IO.FileSecurityState.EnsureState() 在 System.IO.FileSystemInfo.get_FullName() 在 ImageUploadSilverlight.MainPage.FileUpload_Click(对象发送者,RoutedEventArgs e)

任何帮助将不胜感激

谢谢

深浦

【问题讨论】:

    标签: silverlight sharepoint-2010


    【解决方案1】:

    Silverlight 在对客户端用户文件系统的访问非常有限的情况下运行。使用打开文件对话框时,您可以获得所选文件在其父文件夹中的名称、文件的长度以及从中读取文件中数据的流,但仅此而已。您无法读取所选文件的完整路径,并且您会收到异常,因为您正试图这样做。

    如果要将文件的全部内容读入字节数组,则必须替换该行

    localFile.Content = System.IO.File.ReadAllBytes(oFileDialog.File.FullName);
    

    类似的东西

    localFile.content = ReadFully(oFileDialog.File.OpenRead());
    

    ReadFully 方法将流的全部内容读入字节数组。这不是标准的 Silverlight 方法。取而代之的是 取自this answer。 (我在 Silverlight 上对这个方法进行了快速测试,它似乎有效。)

    【讨论】:

    • 从 Internet Explorer 的设置中,您可以自定义隐私设置以显示或不显示完整路径。我想这也适用于 silverlight,这样,您就可以访问完整路径。但是,这将是针对每个客户的解决方法,不推荐。
    • @Beytan:我认为您所指的选项在 Internet 选项、安全选项卡中,单击“自定义级别...”并向下滚动到其他 > 上传文件时包含本地目录路径服务器。该选项似乎对 Silverlight 没有影响 - 完整路径仍然不可用。
    猜你喜欢
    • 2013-07-17
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2011-10-13
    • 2011-08-25
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多