【问题标题】:File Uploading in SilverlightSilverlight 中的文件上传
【发布时间】:2011-11-26 04:59:22
【问题描述】:

我想在 Silverlight 4 的服务器上上传特定文件,

简单地说,我们可以使用“浏览”按钮上传任何文件。 当您单击此按钮时,我们可以获取文件目录并选择任何文件,然后我们可以上传特定文件。

我已经在浏览按钮上编码

 private void btnBrowse_Click(object sender, RoutedEventArgs e)
        {
            var fileDialog =new OpenFileDialog();
            fileDialog.ShowDialog();
            fileDialog.Multiselect = true;
            txtUploader.Text = fileDialog.File.DirectoryName;
            fileDialog.File.CopyTo("C:/UploadedFiles");
        } 

这里的问题是,只有对话框正在打开 无法选择多个文件, 没有得到路径, 无法将文件上传到指定位置。

【问题讨论】:

  • 自从我做 SL 以来已经有一段时间了,但我记得从用户的机器中选择文件由于安全原因受到了严格的限制。同样使用 C:\ 路径调用 CopyTo 并没有真正上传它,C:\ 路径将在用户的机器上(并且几乎可以肯定这是您无法访问的路径,无法启动)

标签: silverlight


【解决方案1】:

尝试更改您设置OpenFileDialog Box 的顺序。

您还返回一个FileInfo 对象。如果要返回多个文件,则需要使用 Files 而不是 File,它将返回 FileInfo 对象的集合。然后,您可以遍历该集合以获取您的信息。在测试代​​码时,我在读取文件路径时遇到了安全异常,您没有按照@MattGreer 的评论执行您想做的事情所需的权限。

从@AnthonyWJones 评论添加的编辑。

除了创建具有更高信任度的 OOB 之外,没有任何方法可以做您想做的事情,这会将您限制在用户的 MyDocuments 文件夹中。

private void btnBrowse_Click(object sender, RoutedEventArgs e) 
    { 
        var fileDialog =new OpenFileDialog(); 
        fileDialog.Multiselect = true; 
        fileDialog.ShowDialog(); 

        IEnumerable<System.IO.FileInfo>  files = fileDialog.Files;
        foreach (System.IO.FileInfo fi in files)
        {
           txtUploader.Text = fi.DirectoryName;
           fi.CopyTo("C:/UploadedFiles");     
        }
    }  

【讨论】:

  • @Mark:没有任何方法可以获取 SL 中其余代码所做的“权限”。最接近的方法是将其作为具有 Elevated Trust 的 OOB 并在用户 MyDocuments 区域内移动文件。
  • @AnthonyWJones 感谢您提供信息,将修改答案以说明此类。
  • @AnthonyWJones 什么是OOB(浏览器外?)如果是这样,那么就没有任何可能的方法来获得浏览器的许可吗?
猜你喜欢
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多