我想实现一个在本地选择一个文件,然后上传到远程服务上,需求很简单,希望高手帮忙小弟,万分感谢,前提大小在100M以内不会超时!

解决方案 »

  1.   

    远程服务器有FTP服务吗?没有也要个服务端程序,比如Socket,WebService,WCF什么的。都可以实现。另外你的远程服务器是局域网还是公网的?
      

  2.   

    http://apps.hi.baidu.com/share/detail/17242198
      

  3.   

    xuexi[align=center]*****************************
    * 本内容使用CSDN 小秘书回复 *
    每天回帖即可得10分可用分! *
    *****************************[/align]
      

  4.   

    需求还是比较笼统,楼主是要做winform的上传还是web的上传?
    winform直接用Socket就应该可以吧,但是一定要保证服务器端
    的文件夹有相应的权限以及可以“写入”的属性等等
      

  5.   

    以下是关键代码 用http上传,这段代码不会报错,但是远程服务器上没有文件!HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(uriString);         
                //不使用缓存
                httpRequest.AllowWriteStreamBuffering = false;            //Timeout(5秒)
                httpRequest.Timeout = 1000*5;
                httpRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"; 
                httpRequest.Method = "POST";           
                //httpRequest.SendChunked = false;
           
                FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);
                BinaryReader r = new BinaryReader(fs);
                byte[] postArray = r.ReadBytes((int)fs.Length);
                httpRequest.ContentLength = postArray.Length;
              
                Stream requestStream = httpRequest.GetRequestStream();           
               // HttpWebResponse httpwebresponse = (HttpWebResponse)httpRequest.GetResponse();
                if (requestStream.CanWrite)
                {                requestStream.Write(postArray, 0, postArray.Length);                requestStream.Close();
                    fs.Dispose();
                    requestStream = null;
                }
      

  6.   

    谢谢楼主解答,我的不是FTP上传!
      

  7.   

    FileAccess.Read  为什么只设置对文件的读权限?不是要写么?FileAccess.ReadWrite试试
      

  8.   

                //添加附件            OpenFileDialog dlgOpenFile = new OpenFileDialog();
                dlgOpenFile.Title = "选择要上传的附件";
                dlgOpenFile.Filter = "所有文件(*.*)|*.*";            if (dlgOpenFile.ShowDialog() == DialogResult.Cancel)
                {
                    return;
                }
                //dlgOpenFile.ValidateNames = true;
                string sFileName = dlgOpenFile.FileName;
                System.IO.FileStream objectfile = new System.IO.FileStream(sFileName, System.IO.FileMode.Open);
                if (RptCode != "00000151")
                {
                    if (objectfile.Length > 4096000)
                    {
                        MessageBox.Show("文件大小超过限制,不能上传,请选择4M以内的附件。", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        objectfile.Close();
                        return;
                    }
                }
                byte[] content = new byte[objectfile.Length];
                objectfile.Read(content, 0, (int)objectfile.Length);            if (content != null)
                {
                    sFileName = sFileName.Substring(sFileName.LastIndexOf("\\") + 1);
                    if (YS.AddNewAnnex(RptCode, MainId, content, sFileName, FormBase.ParameterString))
                    {
                        MessageBox.Show("附件上传成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show("附件上传失败!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    }
                }
                objectfile.Close();
      

  9.   

    这个是WEBServices服务.    [WebMethod]//添加附件
        public bool AddNewAnnex(string RptCode, string DataId, byte[] content, string FileName, string DataBaseName)
        {        sSql = "insert into cofco_Annex select '" + RptCode + "'," + DataId + ",'" + FileName + "','" + null + "'";//,FileName='"+FileName+"' where RptCode='" + RptCode + "' and UploadRptId=" + DataId;
            try
            {
                con.ExecuteSql(sSql, DataBaseName);            sSql = "select max(id) from cofco_annex where rptcode='" + RptCode + "' and UploadRptId=" + DataId;
                DataSet dsfj = con.GetData(sSql, "fjid", DataBaseName);
                string sid = dsfj.Tables[0].Rows[0][0].ToString();
                int i = con.UpdateAnnex(sid, RptCode, DataId, content, FileName, DataBaseName);
                if (i != -1)
                    return true;
                else
                    return false;        }
            catch
            {
                return false;
            }    }