当前位置:编程学习 > C#/ASP.NET >>

急!!!求教,上传文件遇到的问题

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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,