Cast issue 'System.String' to type 'System.Web.U
本文关键字:System Web type to Cast String issue | 更新日期: 2023-09-27 18:10:01
我有一个列表框,其中包含代码读取和解析数据并使用它执行其他操作的目录中特定文件的路径。我得到的错误是Unable to cast object of type 'System.String' to type 'System.Web.UI.HtmlControls.HtmlInputFile'
,我不确定如何克服这个。
我有一个类型file
的html INPUT
控件,其唯一的功能是获得目录路径,因为目录并不总是相同的。然后我将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]);
}
}
}
上面的方法用文件路径和名称加载listbox和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();
.
.
.
}
}
看起来"hif"是一个字符串数组列表,因为你给它添加了文件路径。
因为它包含字符串,所以从中取出来用于循环变量的对象也将是字符串。
这条线:
foreach (System.Web.UI.HtmlControls.HtmlInputFile HIF in hif)
改为
foreach (string HIF in hif)
您将获得文件路径名称,然后可以使用该路径打开文件并获得您想要处理的实际file对象。
基本上你指定的强制类型转换不起作用因为hif里面没有那个类型的对象