我在vs里面测试上传文件和发布在本地iis上面上传文件都没问题 但发布到客户服务器iis上面就报错了
Server Error in '/' Application.
Could not find file 'c:\windows\system32\inetsrv\help-03.jpg'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.IO.FileNotFoundException: Could not find file 'c:\windows\system32\inetsrv\help-03.jpg'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. |
Stack Trace:
[FileNotFoundException: Could not find file 'c:\windows\system32\inetsrv\help-03.jpg'.] System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +9727023 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath) +1142 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access) +84 ExtJsTreeWcf.Registration.IsAllowedExtension(FileUpload hifile) in D:\桌面\乾元易农\WebApplication\Registration.aspx.cs:43 ExtJsTreeWcf.Registration.btnsubmit_Click(Object sender, EventArgs e) in D:\桌面\乾元易农\WebApplication\Registration.aspx.cs:105 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563 |
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1
'c:\windows\system32\inetsrv\ 这个地址是客户服务器上iis的地址
求解决
public static bool IsAllowedExtension(FileUpload hifile) { System.IO.FileStream fs = new System.IO.FileStream(hifile.PostedFile.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.IO.BinaryReader r = new System.IO.BinaryReader(fs); string fileclass = ""; //这里的位长要具体判断. byte buffer; try { buffer = r.ReadByte(); fileclass = buffer.ToString(); buffer = r.ReadByte(); fileclass += buffer.ToString(); } catch { } r.Close(); fs.Close(); if (fileclass == "255216" || fileclass == "7173" || fileclass == "13780")//说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar { return true; } else { return false; } }
我发现了一个问题 我后台没有加这个判断 上传文件可以成功的
前台就是加了这个判断 我估计hifile.PostedFile.FileName和这个有关
在你的机器复制张help-03.jpg图片 到客户机器的 c:\windows\system32\inetsrv\ 目录下试试
成功了- - 怎么回事?
@TimelessMe:
报错写着的
Could not find file 'c:\windows\system32\inetsrv\help-03.jpg'
是不是路径没取对 但是我本地iis和vs里面都可以
@TimelessMe: 这跟你的程序是没关系的
@Yu: 那是怎么回事?
@Yu: 要配置iis么?
@TimelessMe: help-03.jpg 是你上传的吗,如果是 那配置保存的路径就有问题了
@Yu: 或者说 保存和读取的路径不一致
@Yu: 那怎么弄 我是本地访问客户服务器网站的
@Yu: 那怎么弄 我是本地访问客户服务器网站的
@TimelessMe: 那 help-03.jpg 是不是你上传的?
@Yu: 是 是我从我本地访问客户服务器上传的
@TimelessMe: 那上传保存的路径 有没有这个文件
@Yu: 我本地有 服务器上没
@TimelessMe: 你现在是从本地上传文件到服务器, 如果你执行了上传操作,而服务器上没有收到,那就是你程序的问题了
@Yu: 就是不知道问题出在哪- - 搞了好久了
@Yu: 由于服务器没收到,所以读取时,就是报上面的错了。还有这个读取的路径也是有问题的,你不能把文件保存在服务器上的系统文件夹里面,所以还要查查你的路径配置有没有问题
@Yu: 路径配置怎么查 ?
@Yu: 我补充了下问题 你看下
@TimelessMe: 查查代码里面 实现保存的代码,看看保存路径怎么来的,你就怎么修改 通常
string fullname=Server.MapPath("~\SavePath\")+filename;
具体看你怎么实现了
@Yu: 是这样保存的
@TimelessMe: 你说的前台,是怎么实现的
@Yu: 如果是这个IsAllowedExtension 的问题 , 你就在最前面加一个判断
if(!File.Exists(hifile.PostedFile.FileName))return false;
@Yu: 就是IsAllowedExtension的问题 我去掉了 直接判断后缀名 现在正常了 谢谢回答^_^
System.IO.Stream myStream;
Int32 fileLen;
fileLen = FileUpload1.PostedFile.ContentLength;
Byte[] content = new Byte[fileLen];
myStream = FileUpload1.FileContent;
myStream.Read(content, 0, fileLen);
myStream.Close();
这样写就没问题了!