第一步:获取文件的大小并上传的服务器。然后服务器创建一个一样大小的byte数组第二步:使用FileStream按字节读取图片文件。第三步:send上一步读取的字节。对于大文件可以使用循环每次读取固定字节。如果一次性读完内存扛不住。基本步骤就这些。不要抄源码了,那样你学不到东西的。
拿到本地的路径就可以了,有个ftp的例子 FtpWebRequest reqFTP; try { FileInfo fileInfo = new FileInfo(图片路径); reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(服务器路径+ fileInfo.Name)); reqFTP.Method = WebRequestMethods.Ftp.ListDirectory; reqFTP.Credentials = new NetworkCredential(ftp账号, ftp密码); reqFTP.KeepAlive = false; reqFTP.Method = WebRequestMethods.Ftp.UploadFile; reqFTP.UseBinary = true; reqFTP.ContentLength = fileInfo.Length; int buffLength = 2048; byte[] buff = new byte[buffLength]; int contentLen; FileStream fs = fileInfo.OpenRead(); Stream strm = reqFTP.GetRequestStream(); contentLen = fs.Read(buff, 0, buffLength); while (contentLen != 0) { strm.Write(buff, 0, contentLen); contentLen = fs.Read(buff, 0, buffLength); } strm.Close(); fs.Close(); } catch (Exception ex) { } 追问 这样是不是要求,本地要有FTP软件啊??怎么在VS中加载不到头文件啊??? 追答 不需要啊,你服务器上ftp开通了就可以了,你不是cs架构的么?怎么会有头文件?
参悟一下吧 说是说不清楚的 有问题追问我吧 哥很忙的.protected void UploadFiles(object sender, EventArgs e) { if (HttpContext.Current.Request.Files.Count > 0) { //System.Web.HttpPostedFile Provides access to individual files that have been uploaded by a client. HttpPostedFile postedFile = HttpContext.Current.Request.Files[0];//获得用户提交的文件 string savePath; savePath = abpath + "\\NurImg\\";//保存文件的目录,要事先添加,不会自己添加 string extname = Path.GetExtension(postedFile.FileName); string pilename = DateTime.Now.ToString("yyyyMMddhhmmss"); savePath += pilename + extname; if (File.Exists(savePath)) { File.Delete(savePath);//如果文件已经存在就将已存在的文件删除 } postedFile.SaveAs(savePath);//将用户提交的文件postedFile保存为savePath siteimg.ImageUrl = iispath + "NurImg/" + pilename + extname; } }