问题描述
stringurl="http://www.baidu.com";CDO.MessageClassmsg=newCDO.MessageClass();CDO.Configurationc=newCDO.Configuration();msg.Configuration=c;msg.CreateMHTMLBody(url,CDO.CdoMHTMLFlags.cdoSuppressNone,string.Empty,string.Empty);msg.GetStream().SaveToFile(@"d:/1.mht",ADODB.SaveOptionsEnum.adSaveCreateOverWrite);这段代码在本地是可以运行的,但是放到服务器本地再去访问的时候就会报写入文件失败,请问是权限的问题还是什么问题?具体如何实现?
解决方案
解决方案二:
肯定是权限的问题,你的WEB肯定是放在哪个盘的一个目录中,然后你的代码@"d:/1.mht",这是直接操作d盘根目录呀....服务器肯定不愿意啊!!在你的WEB目录下,建一个目录专门用来存这些文件。还要用读写权限,internet来宾帐号这些。
解决方案三:
权限问题,没有给写入文件的权限
解决方案四:
引用1楼anglecloudy的回复:
肯定是权限的问题,你的WEB肯定是放在哪个盘的一个目录中,然后你的代码@"d:/1.mht",这是直接操作d盘根目录呀....服务器肯定不愿意啊!!在你的WEB目录下,建一个目录专门用来存这些文件。还要用读写权限,internet来宾帐号这些。
我是想直接存在客户端本地的,请问一下有什么好的办法?
解决方案五:
一般的做法有两种:1、就是存在服务器,然后用户操作完后,直接提供一个文件下载的超链接,让用户下载保存(大文件适合)2、直接向客户端返回你的文件内容,然后用JS前台来处理保存(小文件适合)
解决方案六:
一般网站都是第一种做法,因为第2种就相当于网页操作客户端电脑,风险大,而且实现起来麻烦,除非自己做控件
解决方案七:
权限问题..设置d盘netservice的所有权限不过一般都不这么干我们有server.mappath..玩网站的目录即可...等等...你要保存到本地?那你只能先生成xxoo.mth然后流读取输出到客户端了..就相当于你下载文件一样..什么?你要问我下载代码?这个还不能去google么?.......
解决方案八:
引用5楼anglecloudy的回复:
一般网站都是第一种做法,因为第2种就相当于网页操作客户端电脑,风险大,而且实现起来麻烦,除非自己做控件
我的业务需求是用户可以选择多条数据进行下载(每条数据生成一个mht文件里面包含照片信息),在服务端生成后续这些生成的文件该如何处理呢
解决方案九:
引用7楼libai0115的回复:
Quote: 引用5楼anglecloudy的回复:
一般网站都是第一种做法,因为第2种就相当于网页操作客户端电脑,风险大,而且实现起来麻烦,除非自己做控件我的业务需求是用户可以选择多条数据进行下载(每条数据生成一个mht文件里面包含照片信息),在服务端生成后续这些生成的文件该如何处理呢
就是给用户提供一个文件列表页面,把刚刚生成的文件全部显示在列表里面,然后让用户自己选择下载。代码网上很多,做法就这样,哪怕是大网站也都差不多这么做的
解决方案十:
网页因为安全问题只能下载了,要自动保存你还得写服务!
解决方案十一:
///<summary>///提供下载///</summary>///<paramname="path">服务器路径</param>///<paramname="page">this</param>///<paramname="isDelete">是否删除</param>publicstaticvoidUploadExcel(stringpath,System.Web.UI.Pagepage,boolisDelete){System.IO.FileInfofile=newSystem.IO.FileInfo(path);page.Response.Clear();page.Response.Charset="GB2312";page.Response.ContentEncoding=System.Text.Encoding.UTF8;//添加头信息,为"文件下载/另存为"对话框指定默认文件名page.Response.AddHeader("Content-Disposition","attachment;filename="+page.Server.UrlEncode(file.Name));//添加头信息,指定文件大小,让浏览器能够显示下载进度page.Response.AddHeader("Content-Length",file.Length.ToString());//指定返回的是一个不能被客户端读取的流,必须被下载page.Response.ContentType="application/ms-excel";//把文件流发送到客户端page.Response.WriteFile(file.FullName);page.Response.Flush();if(isDelete){System.IO.File.Delete(path);}//停止页面的执行page.Response.End();}可以试试看