2016-03-02 39 views
0

我想上传多个文件,只是得到它们的文件名。 当我试图做它只是上传一个文件。多文件上传,没有完整路径

所以它上传文件的完整路径(它的工作原理)。

private void bChooseFolder_Click(object sender, EventArgs e) 
{ 
    CoreClass.OPENDIALOG.Multiselect = true; 
    string oldFilter = CoreClass.OPENDIALOG.Filter; 
    CoreClass.OPENDIALOG.Filter = "(*.csv) | *.csv"; 

    if (CoreClass.OPENDIALOG.ShowDialog() == DialogResult.OK) 
     tbFolderPath.Text = string.Join(FileSeperator, CoreClass.OPENDIALOG.FileNames);// <-- this works, but here I get the full path 

    CoreClass.OPENDIALOG.Filter = oldFilter; 
    CoreClass.OPENDIALOG.Multiselect = false; 
} 

所以我得到的只是文件名,但它上传只是一个文件:

private void bChooseFolder_Click(object sender, EventArgs e) 
{ 
    CoreClass.OPENDIALOG.Multiselect = true; 
    string oldFilter = CoreClass.OPENDIALOG.Filter; 
    CoreClass.OPENDIALOG.Filter = "(*.csv) | *.csv"; 

    if (CoreClass.OPENDIALOG.ShowDialog() == DialogResult.OK) 
     tbFolderPath.Text = string.Join(FileSeperator, System.IO.Path.GetFileNameWithoutExtension(CoreClass.OPENDIALOG.FileName)); // <-- Doesn't work. Just one File. 

    CoreClass.OPENDIALOG.Filter = oldFilter; 
    CoreClass.OPENDIALOG.Multiselect = false; 
} 

回答

1

OK,如果你正在开发WinForms应用程序,然后你使用OpenFileDialog其中包含2个属性:

  • FileName获取或设置一个字符串,其中包含文件对话框中选定的文件名。
  • FileNames获取对话框中所有选定文件的文件名。

然后第一个将永远不会包含几个文件,你应该只在Multiselect = false;模式使用它。

如果你需要显示在一个文本框中的所有文件名,那么你可以使用String.Join方法和LINQ枚举收集和不带扩展名的每个元素获取文件名:

if (CoreClass.OPENDIALOG.ShowDialog() == DialogResult.OK) 
    tbFolderPath.Text = string.Join(FileSeperator, CoreClass.OPENDIALOG.FileNames.Select(x => System.IO.Path.GetFileNameWithoutExtension(x)).ToArray()); // <-- Doesn't work. Just one File. 
+0

然后我得到一个错误:参数1 :无法将字符串[]转换为字符串 – Purger86

+0

@Tomi我扩展了我的答案 –

+1

哇这个工程太棒了!谢谢! – Purger86

相关问题