我有一个列表框,其中包含目录中特定文件的路径,代码读取和解析数据并用它做其他事情。我得到的错误是Unable to cast object of type 'System.String' to type 'System.Web.UI.HtmlControls.HtmlInputFile'
,我不知道如何克服这个问题。
我有一个INPUT
类型的 html 控件,file
其唯一功能是获取目录路径,因为目录并不总是相同。然后我将PostedFile.Filename
看起来像这样C:\temp\2013\03-2013\Calib 100 for 29 Mar 13\211jd13100.txt
的 字符串拆分'\'
为一个字符串数组。我通过添加数组元素减去最后一个索引来重新设置字符串中的路径,并将其用作 'Directory.GetFiles(string) 的参数以获取目录中的所有文件。同样,我不知道获取目录信息的另一种方法。无论如何,我将发布代码,它会更容易理解。
static public ArrayList hif = new ArrayList();
static string[] filePaths;
protected void btnAddFile_Click(object sender, System.EventArgs e)
{
if (Page.IsPostBack == true)
{
StringBuilder sb = new StringBuilder();
string[] dirLocation = fileUpload.PostedFile.FileName.Split('\\');
for (int i = 0; i < dirLocation.Length - 1; i++)
{
sb.Append(dirLocation[i].ToString() + "\\");
}
// The assenbled directory path is being used to get the files.
filePaths = Directory.GetFiles(sb.ToString());
for (int i = 0; i < filePaths.Length; i++)
{
hif.Add(filePaths[i]);
lbxSelectedFiles.Items.Add(filePaths[i]);
}
}
}
filePath
上面的方法使用文件路径和名称加载列表框和数组。下面的方法负责解析,但在此之前我需要获取文件并且错误发生在父母之间的 foreach 语句()。
foreach (System.Web.UI.HtmlControls.HtmlInputFile HIF in hif)
{
try
{
File = HIF.PostedFile;
StreamReader data = new StreamReader(HIF.PostedFile.InputStream);
PathFilename = File.FileName.ToString();
DirectoryInfo directory = new DirectoryInfo(PathFilename);
Directory = directory.Parent.ToString();
.
.
.
}
}