我用文件流判断上传文件的类型!报错!向各位高手求救!
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------未能找到文件“E:\touxiang.jpg”。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IO.FileNotFoundException: 未能找到文件“E:\touxiang.jpg”。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 我写的代码:/// <summary>
/// 判断文件类型是否合法
/// </summary>
/// <param name="myFile"></param>
/// <returns></returns>
public static bool IsAllowedExtension(System.Web.UI.WebControls.FileUpload myFile)
{
FileStream fs = new FileStream(myFile.PostedFile.FileName, FileMode.Open, FileAccess.Read); BinaryReader r = new 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 == "6677" || fileclass == "13780" || fileclass == "8297" || fileclass == "8075" || fileclass == "208207") //说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar,8075是docx,xlsx,pptx,208207是doc,xls,ppt
{
return true;
}
else
{
return false;
}
}在本地能用,放到服务器上就用不了了!急啊!请各位高手帮帮忙!
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------未能找到文件“E:\touxiang.jpg”。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IO.FileNotFoundException: 未能找到文件“E:\touxiang.jpg”。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 我写的代码:/// <summary>
/// 判断文件类型是否合法
/// </summary>
/// <param name="myFile"></param>
/// <returns></returns>
public static bool IsAllowedExtension(System.Web.UI.WebControls.FileUpload myFile)
{
FileStream fs = new FileStream(myFile.PostedFile.FileName, FileMode.Open, FileAccess.Read); BinaryReader r = new 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 == "6677" || fileclass == "13780" || fileclass == "8297" || fileclass == "8075" || fileclass == "208207") //说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar,8075是docx,xlsx,pptx,208207是doc,xls,ppt
{
return true;
}
else
{
return false;
}
}在本地能用,放到服务器上就用不了了!急啊!请各位高手帮帮忙!
楼主从你的程序上看,我解释一下,在本地你运行的正常,原因是你选择了要上传的文件,然后执行到sAllowedExtension()
方法中的FileStream fs = new FileStream(myFile.PostedFile.FileName, FileMode.Open, FileAccess.Read);
此时假如你选择的文件是E:\touxiang.jpg,那么上面的代码就会在服务器(此时也就是你的计算机)内存中生成一个fs对象,你可以运行的正常,当你把你的程序放到了服务器上去了以后,也就是程序离开了你的电脑,你通过你本地的游览器去游览页面时,你选择了你要上传的文件,此时你再执行到FileStream fs = new FileStream(myFile.PostedFile.FileName, FileMode.Open, FileAccess.Read); 那个myFile.PostedFile.FileName=“E:\touxiang.jpg”,那么在服务器中(此时不是你的电脑了请注意)的内存中没有这个文件E:\touxiang.jpg,而导致了fs创建的失败。
if (fupExcel.HasFile)
{
string strTimeForName = DateTime.Now.ToString("yyyy-MM-dd") + "-" + DateTime.Now.Hour.ToString() + "-" + DateTime.Now.Minute.ToString() + "-" + DateTime.Now.Second.ToString();//文件重命名 string sFileName = Path.GetExtension(fupExcel.PostedFile.FileName).ToUpper();//文件属性 if (!(sFileName == ".XLS" || sFileName == ".XLSX"))
{
//
} fupExcel.SaveAs(Server.MapPath("~/Upload/" + strTimeForName + sFileName));//上传到服务器
}<asp:FileUpload ID="fupExcel" runat="server" >控件简单的看以下,不知道有用否。还有就是对保存文件的文件夹设置权限,右键属性,安全,最好给个everyone的读写权限吧。