2014-02-15 176 views
0
protected void File_Upload(object sender, AjaxFileUploadEventArgs e) 
{ 
    List<String> pathlist = null; 
    if (Session["UploadedPath"] != null) 
    { 
     pathlist = (List<String>)Session["UploadedPath"]; 
    } 
    else 
    { 
     pathlist = new List<string>(); 
    } 
    string filename = e.FileName; 
    string path = "~/Documents/" + filename; 
    this.AjaxFileUpload1.SaveAs(Server.MapPath(path)); 
    pathlist.Add(path); 
    Session["UploadedPath"] = pathlist; 
} 

即时得到的误差这样无法投射型“System.String”的对象为类型“System.Collections.Generic.List`1 [System.String]”

无法转换的对象键入System.String键入System.Collections.Generic.List1[System.String].

我如何保存多个文件上传到DATABSE

+0

'Session [“UploadedPath”]'内部的值是什么? – Sachin

+0

什么是Session [“UploadedPath”]的数据类型 –

+0

为字符串Session [“UploadPath”]做一个完整的搜索项目,我敢打赌,你会发现一个地方,你将它设置为一个字符串而不是一个列表 – Steve

回答

0

我看来像你UploadedPath变量是string,不是List<string>所以你不能执行下列投

pathlist = (List<String>)Session["UploadedPath"]; 

你需要确保当你设置UploadedPath绝对List<string>而不是string一个实例。

0

你确定'Session [“UploadedPath”];'包含一个列表类型值?我认为它包含一个字符串值。

pathlist = (List<String>)Session["UploadedPath"]; 

将返回上述异常。

请重新检查你的存储在“UploadedPath”会议的价值,并确保其列表类型

希望下面的代码会帮助你。但请确保您是否在Session [“UploadedPath”]中保存了某些内容;之前,确保它是一个List类型。

我对AjaxFileUpload并不熟悉,如果'e'一次只包含一个文件,下面的代码就可以工作。但是如果它包含多个文件,则必须遍历它并将每个文件添加到“路径列表”,然后将其保存到会话

protected void File_Upload(object sender, AjaxFileUploadEventArgs e) 
{ 
    List<String> pathlist = new List<String>(); 

    if (Session["UploadedPath"] != null) 
    { 
     pathlist = (List<String>)Session["UploadedPath"]; 
    } 

    string filename = e.FileName; 
    string path = "~/Documents/" + filename; 
    this.AjaxFileUpload1.SaveAs(Server.MapPath(path)); 
    pathlist.Add(path); 
    Session["UploadedPath"] = pathlist; 
} 
相关问题