<input id="file" style="width: 300px" onchange="tree_showpic()" type="file" />
ajax执行异步上传
 var content="path="+tree_$("file").value;
 dosavemymy("loadpic.aspx",content,"uploadpic");Page_Load调用上传函数
 string loadmes = UpLoadFile(Request.Form["path"]);
 Response.Write(loadmes);
 Response.End();
 return;
上传函数
   private string UpLoadFile(string fileNamePath)
    {
        //获取上传图片格式
        string fileNameExt = fileNamePath.Substring(fileNamePath.LastIndexOf(".") + 1).ToLower();
        if ("jpg|gif|png|bmp".IndexOf(fileNameExt) >= 0)
        {
            //根据用户ID指定头像存储地址
            int userid = Int32.Parse(Request.Cookies["mymyid"].Value.ToString());
            string mainpath = Server.MapPath("../");
            string savepath1 = mainpath + "mymyfiles\\" + ((int)(userid / 1000)).ToString() + "\\" + ((int)(userid / 100)).ToString() + "\\" + userid.ToString() + "\\" + "headpic1.jpg";
                        //创建WebClient实例       
            WebClient myWebClient = new WebClient();
            myWebClient.Credentials = CredentialCache.DefaultCredentials;
            //       要上传的文件           
            FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);
            BinaryReader r = new BinaryReader(fs);
            try
            {
                byte[] postArray = r.ReadBytes((int)fs.Length);
                Stream postStream = myWebClient.OpenWrite(savepath1, "PUT");
                if (postStream.CanWrite)
                {
                    postStream.Write(postArray, 0, postArray.Length);
                    postStream.Close();
                                       
                    return "恭喜您,文件上传成功!";
               }
                else
                {
                    postStream.Close();
                    return "文件目前不可写!";
                }            }
            catch(Exception e)
            {
                return "对不起上传出错,请稍后再试。错误信息:"+e.Message.ToString();
            }
        }
        else
            return "上传的文件格式不对,必须为GIF、JPG、PNG和BMP中的一种!";
    }
以上代码在本机里执行上传很正常,但是上传到服务器后就不能使用了。我估计原因可能是代码限制只能上传本地的文件,请高手帮我看看怎么解决

解决方案 »

  1.   

    <input id="file" style="width: 300px" onchange="tree_showpic()" type="file" />
    ajax执行异步上传
     var content="path="+tree_$("file").value;
     dosavemymy("loadpic.aspx",content,"uploadpic");
    =========================================
    我这个获取客户端的地址方式对吗?自我感觉在本机是对的,但是在服务器上就不对了,但是不知道怎么解决
      

  2.   

     string mainpath = Server.MapPath("../");
    路徑錯誤
      

  3.   


    string mainpath = Server.MapPath("../");
    string savepath1 = mainpath + "mymyfiles\\" + ((int)(userid / 1000)).ToString() + "\\" + ((int)(userid / 100)).ToString() + "\\" + userid.ToString() + "\\" + "headpic1.jpg";保存路径是没有错误的。有错误的路径是客户端上传的路径,
     var content="path="+tree_$("file").value;
     dosavemymy("loadpic.aspx",content,"uploadpic");
    Request.Form["path"]这个获得到的路径只是客户端机器的路径而已,到了服务端,就路径就不正确了
      

  4.   

    你的方向走错了。
    上传文件,只能通过表单提交的方式来实现。不可能通过纯js实现。可以用js来调用表单提交。
      

  5.   

    就是
    <form name="form1" target="一个宽和高都是0像素的iframe">
    <input type="file" /><input type="submit" />
    </form>
    可以用脚本调用form1.submit();
      

  6.   

    ...上传文件竟然能用ajax实现???...你也太厉害了...
      

  7.   


    能否再详细点啊,最好给个实例看看啊!!!
    target="一个宽和高都是0像素的iframe"
    这个干什么用的啊?怎么接收啊?
      

  8.   

     <iframe width=0 height=0 name="iframe1"></iframe>
      <form method="post" action="upload.aspx" target="iframe1">
    <input type="file" id="a" /><input type="submit" />
      </form>在upload.aspx里写:Request.Files[0].SaveAs("xxxx.....Response.Write("<script>alert('上传成功');</script>");
      

  9.   

    小灰说的不错,只能利用表单方式提交.
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="upload.aspx.cs" Inherits="upload" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>上传</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link href="css/css.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="js/jquery-1.2.3.min.js"></script>
        <script type="text/javascript" src="js/interface.js"></script>
        <style type="text/css">
            *{ margin:0; padding:0; }
            
        </style>
        <script type="text/javascript">
            
        var uploadSelect = function(el){
        el.fadeOut("show");
        parent.click_upload(document.getElementById("<%=file1.ClientID %>").value,'<%=itemID %>');
        $("#<%=frmUpload.ClientID %>").submit();
        };
          
        </script>
    </head>
    <body>
        <form runat="server" id="frmUpload" method="post" enctype="multipart/form-data">
            <input type="file" runat="server" class="kuang" id="file1" size="40" onchange="uploadSelect($(this));" />     
        </form>
    </body>
    </html>这是我写的局部刷新上传文件  其他代码就不公开了`~