2011-11-26 77 views
2

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

简单,上传我们可以使用任何文件中的“浏览”按钮。 当你点击这个按钮,我们可以得到文件目录,并选择任何文件&我们可以上传特定的文件。

我已经编写的浏览按钮

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"); 
     } 

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

+3

它一直以来我所做的SL一段时间,但我记得从用户的机器中选择文件由于安全受到严重限制。也调用CopyTo与C:\路径并不真正上传它,该C:\路径将在用户的机器上(这几乎肯定是你无法访问的路径,引导) –

回答

3

尝试更改您设置OpenFileDialog框的订单。

另外您还要返回FileInfo对象。如果您要返回多个文件,则需要使用“文件”而不是“文件”,它将返回FileInfo对象的集合。然后,您可以遍历该集合以获取您的信息。在对代码进行测试时,我在阅读文件路径时遇到了安全性异常,因此您没有权限执行您想要执行的任务@ MattGreer的评论。

编辑添加自@AnthonyWJones评论。

除了创建具有提升信任的OOB外,没有任何方法可以做您正在尝试执行的操作,并且会将您限制到用户MyDocuments文件夹。

enter image description here

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");  
     } 
    } 
+1

谢谢它解决了多选的问题!! – Faizan

+1

@Mark:没有什么办法可以让代码的其余部分在SL中执行“权限”。最接近你可以将它作为具有高架信任的OOB,并在用户的'MyDocuments'区域内移动文件。 – AnthonyWJones

+1

@AnthonyWJones感谢您的信息,将修改回答这样的状态。 –