急!!!求教,上传文件遇到的问题
StartIndex 不能小于 0。参数名: startIndex
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: StartIndex 不能小于 0。
参数名: startIndex
源错误:
行 21: string strDir = FileUpload1.PostedFile.FileName;
行 22: int myPos = strDir.LastIndexOf("\\");
行 23: string strFileName = strDir.Substring(myPos);
行 24: string strPath = Server.MapPath(".") + strFileName;
行 25: this.Label2.Text = "保存路径: ";
--------------------编程问答-------------------- 上传的不带路径的。你这里LastIndexOf没用,22,23行删除吧。
string strPath = Path.Combine(Server.MapPath("."),FileUpload1.PostedFile.FileName); --------------------编程问答-------------------- 额。。刚才看了看,其实我的button控件里的代码是这样的
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.PostedFile != null)
{
string strDir = FileUpload1.PostedFile.FileName;
int myPos = strDir.LastIndexOf("\\");
string strFileName = strDir.Substring(myPos);
string strPath = Server.MapPath(".") + strFileName;
this.Label1.Text = "保存路径:";
this.Label1.Text += strPath;
FileUpload1.PostedFile.SaveAs(strPath);
this.Label1.Text += "文件名称:";
this.Label1.Text += FileUpload1.PostedFile.FileName;
this.Label1.Text += "文件类型:";
this.Label1.Text += FileUpload1.PostedFile.ContentType;
this.Label1.Text += "文件大小:";
this.Label1.Text += FileUpload1.PostedFile.ContentLength.ToString();
}
}
}
删除了那两项之后,又提示别的错误了 --------------------编程问答--------------------
<%@ Import Namespace="System" %>--------------------编程问答-------------------- 你取路径那的问题,或许你的路径里面就没有'\\',但你去得到它的索引,就会出错! --------------------编程问答-------------------- 在路径前加@,防止路径中的\斜杠被转义
<%@ Import Namespace="System.Web.HttpPostedFile" %>
<%@ Import Namespace="System.Web.UI.HtmlControls.HtmlInputFile" %>
<script language="VB" runat="server">
Sub UpLoad(Src As Object, E As EventArgs)
If UploadFile.PostedFile.ContentLength=0 then
ShowUpLoadFile.innerText="上传失败或文件不存在!"
Else
'获取文件名
dim Temp() as String=Split(UploadFile.PostedFile.FileName,"\")
dim FileName as String=Temp(Temp.Length-1)
'保存文件
UploadFile.PostedFile.SaveAs(Server.MapPath(".") & "\Files\" & FileName)
'显示上传结果
ShowUpLoadFile.InnerHtml="文件上传成功!<br>上传文件名:" & FileName
End If
End Sub
</script>
<html>
<body>
<form runat="server" enctype="multipart/form-data">
<input type="file" id="UploadFile" runat="server" size="50"><br>
<asp:button runat="server" Text="立即上传" onClick="Upload" />
</form>
<hr><br>
<span id="ShowUpLoadFile" runat="server"></span>
</body>
</html>
还有路径前最好加Server.MapPath,这样才能将相对路径转换为服务器的绝对路径 --------------------编程问答-------------------- 简单一句话
string strFileName = strDir.Substring(myPos + 1);
--------------------编程问答-------------------- 1.strDir你的值不对,你索引的时,查找不到("\\")报错
2.你是不是在UpdatePanel里面用FileUpload1,如果是这样的话strDir就是空值,你在加上
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnExport"></asp:PostBackTrigger>
</Triggers>
</asp:UpdatePanel>
补充:.NET技术 , C#