asp.net 图片上传服务器问题

下面代码在本地能成功,上传到服务器上就报错,服务器上的权限什么的都设置好了,还是不行,帮帮忙看看问题出在哪?if(Session["loginname"]!=null){... 下面代码在本地能成功,上传到服务器上就报错,服务器上的权限什么的都设置好了,还是不行,帮帮忙看看问题出在哪?

if (Session["loginname"] != null)
{
string loginname = Session["loginname"].ToString();
int allowlength = 1024 * 1024 * 10;//限制文件大小
string name = FileUpload1.PostedFile.FileName; // 客户端文件路径
FileInfo file = new FileInfo(name);
if (name != "")
{
string size = FileUpload1.PostedFile.ContentLength.ToString(); //获取已上传文件夹的大小
string type = new FileInfo(FileUpload1.PostedFile.FileName).Extension; //得到文件的后缀

string fullpath = Server.MapPath("~/UserDocument/" + loginname + "/Picture/");//文件的保存路径

string vsnewname = System.DateTime.Now.ToString("yyyyMMddHHmm_");//声称文件名,防止重复

path = "UserDocument/" + loginname + "/Picture/" + vsnewname;
if (file.Length < allowlength)
{
if (type == ".bmp" || type == ".png" || type == ".jpg" || type == ".gif" || type == ".BMP" || type == ".PNG" || type == ".JPG" || type == ".GIF")
{
if (!Directory.Exists(fullpath))//判断上传文件夹是否存在,若不存在,则创建
{
//创建文件夹
Directory.CreateDirectory(fullpath);

FileUpload1.PostedFile.SaveAs(fullpath + vsnewname + file.Name);

}
else
{
FileUpload1.PostedFile.SaveAs(fullpath + vsnewname + file.Name);
}

}
else
{
Page.RegisterStartupScript("", "<script>alert('上传文件格式错误!');history.go(-1);</script>");

}
}
else
{
Page.RegisterStartupScript("", "<script>alert('上传文件太大!');history.go(-1);</script>");
}
}
else
{
Page.RegisterStartupScript("", "<script>alert('请上传文件!');history.go(-1);</script>");
}
展开
 我来答
linux7985
2008-09-28 · TA获得超过1230个赞
知道小有建树答主
回答量:501
采纳率:0%
帮助的人:434万
展开全部
你应该说明一下,发生了什么错误

FileInfo file = new FileInfo( name ); 这个错误是严重的,
这个服务器可没有这个file,

file.Length可以改成 FileUpload1.PostedFile.ContentLength
如果你要获取没有路径的文件名
你可以string filename = Path.GetFileName(sf.PostedFile.FileName);
如果你要获取文件的扩展名可以
string type = Path.GetExtension(sf.PostedFile.FileName);//带点的

你在本地可以是因为,
FileInfo file = new FileInfo( name ); 这里的name是一个有路径的名字,因此,file为本地上一个文件的句柄(这个name是你在上传框里填写的)
而到了服务器上是根本没有这个name所代表的文件,因此你所有的操作都会失败,因file代表的是一个根本不存在的文件,

因此你应该改成这样
if ( Session["loginname"] != null )
{
string loginname = Session["loginname"].ToString();
int allowlength = 1024 * 1024 * 10;//限制文件大小
string filename = Path.GetFileName( FileUpload1.PostedFile.FileName );
if ( FileUpload1.HasFile ) // 有上传文件
{
string size = FileUpload1.PostedFile.ContentLength.ToString(); //获取已上传文件夹的大小
string type = Path.GetExtension( FileUpload1.PostedFile.FileName ); //得到文件的后缀

string fullpath = Server.MapPath( "~/UserDocument/" + loginname + "/Picture/" );//文件的保存路径

string vsnewname = System.DateTime.Now.ToString( "yyyyMMddHHmm_" );//声称文件名,防止重复

path = "UserDocument/" + loginname + "/Picture/" + vsnewname;
if ( FileUpload1.PostedFile.ContentLength < allowlength )
{
if ( type == ".bmp" || type == ".png" || type == ".jpg" || type == ".gif" || type == ".BMP" || type == ".PNG" || type == ".JPG" || type == ".GIF" )
{
if ( !Directory.Exists( fullpath ) )//判断上传文件夹是否存在,若不存在,则创建
{
//创建文件夹
Directory.CreateDirectory( fullpath );

FileUpload1.PostedFile.SaveAs( fullpath + vsnewname + filename );

}
else
{
FileUpload1.PostedFile.SaveAs( fullpath + vsnewname + filename );
}

}
else
{
Page.RegisterStartupScript( "", "<script>alert('上传文件格式错误!');history.go(-1);</script>" );

}
}
else
{
Page.RegisterStartupScript( "", "<script>alert('上传文件太大!');history.go(-1);</script>" );
}
}
else
{
Page.RegisterStartupScript( "", "<script>alert('请上传文件!');history.go(-1);</script>" );
}
}

分多的话,我不介意你多加些给我
371638041
2008-09-27 · TA获得超过100个赞
知道答主
回答量:170
采纳率:0%
帮助的人:160万
展开全部
string fullpath = Server.MapPath("~/UserDocument/" + loginname + "/Picture/");//文件的保存路径
应该是这个路径错了
貌似应该这样
string fullpath = Server.MapPath("../UserDocument/" + loginname + "/Picture/");//文件的保存路径
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式