多个文件上传没有完整路径

时间:2016-03-02 10:05:27

标签: c# visual-studio file-upload multifile-uploader

我试图上传多个文件并获取它们的文件名。 当我尝试这样做时,它只会上传一个文件。

所以它上传完整路径的文件(并且它可以工作)。

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 个答案:

答案 0 :(得分:1)

好的,如果您正在开发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.