问题描述
如何实现客户端下载服务器文件到任意位置C#
解决方案
解决方案二:
具体点?到底什么需求?
解决方案三:
b/s上是做不到的,除非你到用ACTIVEX,当然,.NET的伪ACTIVEX也可以做到,不过部署很麻烦。
解决方案四:
newWebClient().DownloadFile("服务器文件地址","本地任意路径");
解决方案五:
解决方案六:
位置是代码里写死的还是可以选择的?
解决方案七:
直接下载到本地不弹出保存提示框的
解决方案八:
类似qq在线接收文件之后不选择保存路径,自动保存到用户电脑上的这样的功能,用webservice可以实现吗
解决方案九:
WebService项目中的Web.config配置代码<appSettings><addkey="UploadFileFolder"value="/Uploads/TestUpload/"/></appSettings>WebService项目中的ImageService.asmx代码///<summary>///Webservice中的下载文件处理函数///</summary>///<paramname="filePath">文件路径</param>///<returns>返回文件流</returns>[WebMethod(Description="下载服务器站点文件,传递文件相对路径")]publicbyte[]DownloadFile(stringstrFilePath){FileStreamfs=null;stringCurrentUploadFolderPath=Server.MapPath(ConfigurationManager.AppSettings["UploadFileFolder"]);stringCurrentUploadFilePath=CurrentUploadFolderPath+strFilePath;if(File.Exists(CurrentUploadFilePath)){try{///打开现有文件以进行读取。fs=File.OpenRead(CurrentUploadFilePath);intb1;System.IO.MemoryStreamtempStream=newSystem.IO.MemoryStream();while((b1=fs.ReadByte())!=-1){tempStream.WriteByte(((byte)b1));}returntempStream.ToArray();}catch(Exceptionex){returnnewbyte[0];}finally{fs.Close();}}else{returnnewbyte[0];}}Winform项目中的窗体下载按钮代码privatevoidbtnDownload_Click(objectsender,EventArgse){stringCurrentServiceFilePath=this.txtServiceFile.Text.Trim();stringCurrentDownloadFolderPath=this.txtDownloadFolder.Text.Trim();if(CurrentServiceFilePath==""||CurrentDownloadFolderPath==""){MessageBox.Show(DownloadImage(CurrentServiceFilePath,CurrentDownloadFolderPath));}elseif(CurrentServiceFilePath==""){MessageBox.Show("请填写要下载的服务器文件路径和选择本地保存目录");}elseif(CurrentDownloadFolderPath==""){MessageBox.Show("请填写要下载的服务器文件路径和选择本地保存目录");}}Winform项目中的窗体下载按钮调用函数///<summary>///通过WebService下载文件///</summary>///<paramname="ServiceFilePath">服务器图片路径</param>///<paramname="DownloadFolderPath">本地图片路径</param>privatestringDownloadImage(stringServiceFilePath,stringDownloadFolderPath){try{stringDownloadFileName="";if(ServiceFilePath.Contains("/")){DownloadFileName=ServiceFilePath.Substring(ServiceFilePath.LastIndexOf("/"));}else{DownloadFileName=ServiceFilePath;}stringDownloadFilePath=DownloadFolderPath+"\"+DownloadFileName;localhost.ImageServicemyImageService=newlocalhost.ImageService();byte[]bytes=myImageService.DownloadFile(ServiceFilePath);if(bytes!=null){if(!Directory.Exists(DownloadFolderPath)){Directory.CreateDirectory(DownloadFolderPath);}if(!File.Exists(DownloadFilePath)){File.Create(DownloadFilePath).Dispose();}//如果不存在完整的上传路径就创建FileInfodownloadInfo=newFileInfo(DownloadFilePath);if(downloadInfo.IsReadOnly){downloadInfo.IsReadOnly=false;}//定义并实例化一个内存流,以存放提交上来的字节数组。MemoryStreamms=newMemoryStream(bytes);//定义实际文件对象,保存上载的文件。FileStreamfs=newFileStream(DownloadFilePath,FileMode.Create);///把内内存里的数据写入物理文件ms.WriteTo(fs);fs.Flush();ms.Flush();ms.Close();fs.Close();fs=null;ms=null;}return"下载成功";}catch(Exceptionex){return"下载失败"+ex.Message;}}