我用的fileupload上传文件,但是运行时提示 StartIndex不能小于0。(该页面既是增加页面也是修改页面)
代码如下:
string Fullname = this.FileUpload1.FileName;//获取文件的名称
int index = Fullname.LastIndexOf(".");
string vstype = Fullname.Substring(index).ToLower();//取文件的扩展名
string Type = Fullname.Substring(Fullname.LastIndexOf(".") + 1); //获得文件的类型,即后缀
string vsnewname = System.DateTime.Now.ToString("yyyyMMddHHmmssffff");//声称文件名,防止重复
vsnewname = vsnewname + vstype;//完整的上传文件名
if (!FileUpload1.HasFile && this.OpsId == -1)//若增加页面时,上传的文件为空
{
Response.Write("<script language='javascript'>alert('请选择要上传的文件!');</script>");
return ds;
}
if (FileUpload1.HasFile)
{
if (Type == "pdf" || Type == "doc" || Type == "xls" || Type == "txt" || Type == "PDF" || Type == "DOC" || Type == "XLS" || Type == "TXT" || Type == "jpg" || Type == "JPG" || Type == "gif" || Type == "bmp" || Type == "rar" || Type == "zip" || Type == "dwg" || Type == "jpg" || Type == "JPG" || Type == "GIF" || Type == "BMP" || Type == "RAR" || Type == "ZIP" || Type == "DWG")
{
this.FileUpload1.SaveAs(Server.MapPath("~/Fujian/" + vsnewname));
dr[ShProductData.PRODES_FIELD] = vsnewname; //添加页面时 直接赋值
}
else
{
Response.Write("<script language='javascript'>alert('你上传的文件格式有错误!');window.location.href='ProductEdit.aspx';</script>");
return ds;
}
}
dr[ShProductData.NUMCODE_FIELD] = this.txtNumCode.Text;
dr[ShProductData.VERSION_FIELD] = this.txtVerSion.Text;
dr[ShProductData.PRONAME_FIELD] = this.txtProName.Text;
dr[ShProductData.PROCLASS_FIELD] = int.Parse(this.ddlProClass.SelectedValue);
dr[ShProductData.KEYWORDS_FIELD] = this.txtKeyWords.Text;
dr[ShProductData.PRODES_FIELD] = vsnewname;//上传的文件名
dr[ShProductData.ISWAS_FIELD] = 0;
dr[ShProductData.BEIZ_FIELD] = this.txtBeiz.Text;
dr[ShProductData.EXE_FIELD] = Type;//文件后缀
dr[ShProductData.ADDTIME_FIELD] = this.txtAddTime.Text;
if (this.OpsId != -1)//更新页面
{
dr[ShProductData.ID_FIELD] = this.OpsId;//表示更新数据的 ID
if (!FileUpload1.HasFile)//若更新页面上没有上传文件
{
dr[ShProductData.PRODES_FIELD] = ViewState["file"].ToString(); //原数据列中该文件名
dr[ShProductData.EXE_FIELD] = ViewState["index"].ToString(); //原数据列中该文件后缀
}
}
ds.Tables[0].Rows.Add(dr);
return ds;
该页面既是增加页面也是修改页面 如果为增加页面,则必须上传文件,否则提示'请选择要上传的文件”且文件格式要对。若修改页面,想重新上传附件,则相应的文件后缀及上传的文件名为新上传的,若更新页面没有上传文件,则附件仍为原来的 后缀也是原来的。问题就在这,当更新页面没有上传文件时,此时就提示“StartIndex不能小于0”的错误,请问这个问题该如何解决??大家可能会说 在 int index = Fullname.LastIndexOf(".");的后面加个1,但是如果这样的话,保存的附件的名字就不对了,就会变成 ***doc ,而非原来的***.doc 少了个. 请大家帮忙看下 代码如何改?谢谢啊
代码如下:
string Fullname = this.FileUpload1.FileName;//获取文件的名称
int index = Fullname.LastIndexOf(".");
string vstype = Fullname.Substring(index).ToLower();//取文件的扩展名
string Type = Fullname.Substring(Fullname.LastIndexOf(".") + 1); //获得文件的类型,即后缀
string vsnewname = System.DateTime.Now.ToString("yyyyMMddHHmmssffff");//声称文件名,防止重复
vsnewname = vsnewname + vstype;//完整的上传文件名
if (!FileUpload1.HasFile && this.OpsId == -1)//若增加页面时,上传的文件为空
{
Response.Write("<script language='javascript'>alert('请选择要上传的文件!');</script>");
return ds;
}
if (FileUpload1.HasFile)
{
if (Type == "pdf" || Type == "doc" || Type == "xls" || Type == "txt" || Type == "PDF" || Type == "DOC" || Type == "XLS" || Type == "TXT" || Type == "jpg" || Type == "JPG" || Type == "gif" || Type == "bmp" || Type == "rar" || Type == "zip" || Type == "dwg" || Type == "jpg" || Type == "JPG" || Type == "GIF" || Type == "BMP" || Type == "RAR" || Type == "ZIP" || Type == "DWG")
{
this.FileUpload1.SaveAs(Server.MapPath("~/Fujian/" + vsnewname));
dr[ShProductData.PRODES_FIELD] = vsnewname; //添加页面时 直接赋值
}
else
{
Response.Write("<script language='javascript'>alert('你上传的文件格式有错误!');window.location.href='ProductEdit.aspx';</script>");
return ds;
}
}
dr[ShProductData.NUMCODE_FIELD] = this.txtNumCode.Text;
dr[ShProductData.VERSION_FIELD] = this.txtVerSion.Text;
dr[ShProductData.PRONAME_FIELD] = this.txtProName.Text;
dr[ShProductData.PROCLASS_FIELD] = int.Parse(this.ddlProClass.SelectedValue);
dr[ShProductData.KEYWORDS_FIELD] = this.txtKeyWords.Text;
dr[ShProductData.PRODES_FIELD] = vsnewname;//上传的文件名
dr[ShProductData.ISWAS_FIELD] = 0;
dr[ShProductData.BEIZ_FIELD] = this.txtBeiz.Text;
dr[ShProductData.EXE_FIELD] = Type;//文件后缀
dr[ShProductData.ADDTIME_FIELD] = this.txtAddTime.Text;
if (this.OpsId != -1)//更新页面
{
dr[ShProductData.ID_FIELD] = this.OpsId;//表示更新数据的 ID
if (!FileUpload1.HasFile)//若更新页面上没有上传文件
{
dr[ShProductData.PRODES_FIELD] = ViewState["file"].ToString(); //原数据列中该文件名
dr[ShProductData.EXE_FIELD] = ViewState["index"].ToString(); //原数据列中该文件后缀
}
}
ds.Tables[0].Rows.Add(dr);
return ds;
该页面既是增加页面也是修改页面 如果为增加页面,则必须上传文件,否则提示'请选择要上传的文件”且文件格式要对。若修改页面,想重新上传附件,则相应的文件后缀及上传的文件名为新上传的,若更新页面没有上传文件,则附件仍为原来的 后缀也是原来的。问题就在这,当更新页面没有上传文件时,此时就提示“StartIndex不能小于0”的错误,请问这个问题该如何解决??大家可能会说 在 int index = Fullname.LastIndexOf(".");的后面加个1,但是如果这样的话,保存的附件的名字就不对了,就会变成 ***doc ,而非原来的***.doc 少了个. 请大家帮忙看下 代码如何改?谢谢啊
解决方案 »
- Microsoft VBScript 运行时错误 '800a000d' 类型不匹配: 'base4'
- asp.net每天的第一次打开页面都很慢
- 怎样把二维数组存储到gridview中或其他的k控件中
- 容错等功能都要想到,请问一下,这里的“容错功能”是指什么?
- 提示框
- 将字符串转换成Unicode码后,,如何输出Unicode码的内容??
- 关于iframe的问题,请大家帮帮忙!谢谢
- 求教:带有树状下拉框的查询思路
- 'False'转换为数据类型为 bit 的列时发生语法错误
- 要做VOD系统,需要在各服务器间拷贝/(移动) 大型影片文件!请高手指点!
- 关于base64数据生成图片上传到服务器的问题
- 我要把form里面的defaultbutton改掉,用js实现,谁知道怎么改啊?
----------------------
string Fullname = this.FileUpload1.FileName;//获取文件的名称
int index = Fullname.LastIndexOf(".");
string vstype = Fullname.Substring(index).ToLower();//取文件的扩展名
string Type = Fullname.Substring(Fullname.LastIndexOf(".") + 1); //获得文件的类型,即后缀
string vsnewname = System.DateTime.Now.ToString("yyyyMMddHHmmssffff");//声称文件名,防止重复
vsnewname = vsnewname + vstype;//完整的上传文件名 ------------------------
放到用户选择了上传文件的里面。
也就是FileUpload1.HasFile为真的时候在去做
string fileExtName= Fullname .Substring(Fullname.LastIndexOf(".")+1);
string strName=Fullname.Substring(Fullname.LastIndexOf("\\")+1);