求帮助,急急急~~~~~StartIndex 不能小于 0
StartIndex 不能小于 0。
参数名: startIndex
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: StartIndex 不能小于 0。
参数名: startIndex
源错误:
行 85: WebData.Model.HT_JSHT_FJ fj = new WebData.Model.HT_JSHT_FJ();
行 86: fj.HT_JSHT_FJ_HTID = htid;
行 87: string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));
行 88: fj.HT_JSHT_FJ_MC = mc.Substring(1, mc.Length - 5);
行 89: fj.HT_JSHT_FJ_LJ = "ht_fj\\" + year + "\\" + hid_htbh.Value + "\\" + newFileName;
这里是源文件:
for (int i = 0; i < Request.Files.Count; i++)
{
if (Request.Files[i].ContentLength > 0 && Request.Files[i].ContentLength <= 209715200)
{
string ex = System.IO.Path.GetExtension(Request.Files[i].FileName).ToLower();
if (".jpg.gif.png.bmp".Contains(ex))
{
string newFileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + r.Next(100, 999).ToString() + ex;
//保存文件名到数据库
//xxxxxxxxxxxxxxxx
WebData.Model.HT_JSHT_FJ fj = new WebData.Model.HT_JSHT_FJ();
fj.HT_JSHT_FJ_HTID = htid;
string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));
fj.HT_JSHT_FJ_MC = mc.Substring(1, mc.Length - 5);
fj.HT_JSHT_FJ_LJ = "ht_fj\\" + year + "\\" + hid_htbh.Value + "\\" + newFileName;
fj.HT_JSHT_FJ_ZT = 1;
WebData.DAL.HT_JSHT_FJ.Add(fj);
//xxxxxxxxxxxxxxxx
Request.Files[i].SaveAs(Server.MapPath("../ht_fj") + "\\" + year + "\\" + hid_htbh.Value + "\\" + newFileName);
//pic = newFileName;
}
}
}
麻烦大家帮我看看。。。
------解决方案--------------------string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));
这句问题
Request.Files[i].FileName.LastIndexOf('\\',0));
有一条应该为空 index 为-1
------解决方案-------------------- 判断
if(Request.Files[i].FileName.LastIndexOf('\\',0)!=-1)
{
string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));
}
------解决方案--------------------Request.Files[i].FileName.LastIndexOf('\\',0)
这个的问题。。。
Request.Files[i].FileName调试一下。。看值是什么
------解决方案--------------------Substring(-1)会报错:StartIndex 不能小于 0。
------解决方案--------------------如果
Request.Files[i].FileName.LastIndexOf('\\',0)
没找到的话返回的是-1,因此subString(startindex)中startindex=-1,这样就报错了
做个容错,找到了才截取 ,没找到就另外做处理
------解决方案--------------------subString(-1) 会报错,StartIndex不能小于0
------解决方案--------------------if(Request.Files[i].FileName.LastIndexOf('\\',0)!=-1)
{