aspx页面代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: center">
<span style="font-size: 32pt; color: #99cc00">
上传图片</span><br />
<br />
<asp:Image ID="Image1" runat="server" Height="218px" Width="286px" /><br />
<br />
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="提交" /><br />
<br />
<asp:Label ID="Label1" runat="server" Text="Label" ForeColor="Red"></asp:Label></div>
</form>
</body>
</html>
cs页面代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Image1.Visible = false;
Label1.Visible = false;
}
protected void Button1_Click(object sender, EventArgs e)
{
string picname = FileUpload1.FileName;//获取上传文件名称
int picsize = FileUpload1.PostedFile.ContentLength;//获取上传文件大小
string pictype = picname.Substring(picname.LastIndexOf("."));//获取上传文件类型
string posttime = DateTime.Now.ToString("yyyyMMddhhmmss");//获取上传文件时间字符串 yyyyMMddhhmmss->年年年年月月日日时时分分秒秒
string picpathsuccess = Server.MapPath("PicUpLoadSuccess")+"//"+posttime+pictype;//获取上传文件成功的物理路径,注意是“//”
string picpathfailed = Server.MapPath("PicUpLoadFailed") + "//" + posttime + pictype;//获取上传文件失败的物理路径,注意是“//”
if(pictype==".jpg"||pictype==".gif"||pictype==".JPG"||pictype==".GIF"||pictype==".jpeg"||pictype==".JPEG")
{
FileUpload1.SaveAs(picpathsuccess);//保存上传文件到服务器
Label1.Text = "图片上传成功,图片的名字是:"+picname+"图片的大小是:"+picsize+"byte";
Label1.Visible = true;
Image1.ImageUrl = "PicUpLoadSuccess//" + posttime + pictype;//相对路径和绝对路径问题,注意是“//”
Image1.Visible = true;
}
else
{
FileUpload1.SaveAs(picpathfailed);
Label1.Text = "图片上传失败,图片的名字是:" + picname + "图片的大小是:" + picsize+"byte";
Label1.Visible = true;
Image1.ImageUrl = "PicUpLoadFailed//picuploadfailed.JPG";
Image1.Visible = true;
}
}
}
补充:绝对路径VS相对路径
在我们平时使用计算机时要找到需要的文件就必须知道文件的位置,而表示文件的位置的方式就是路径,例如只要看到这个路径:c:/website/img/photo.jpg我们就知道photo.jpg文件是在c盘的website目录下的img子目录中。类似于这样完整的描述文件位置的路径就是绝对路径。 http://www.e3i5.net/img/photo.jpg来确定文件位置的方式也是绝对路径。
相对路径:
分析一下为什么会发生图片不能正常显示的情况。举一个例子,现在有一个页面index.htm,在这个页面中联接有一张图片photo.jpg。他们的绝对路径如下:
c:/website/index.htm
c:/website/img/photo.jpg
如果你使用绝对路径c:/website/img/photo.jpg,那么在自己的计算机上将一切正常,因为确实可以在指定的位置即c:/website/img/photo.jpg上找到photo.jpg文件,但是当你将页面上传到网站的时候就很可能会出错了,因为你的网站可能在服务器的c盘,可能在d盘,也可能在aa目录下,更可能在bb目录下,总之没有理由会有c:/website/img/photo.jpg这样一个路径。那么,在index.htm文件中要使用什么样的路径来定位photo.jpg文件呢?对,应该是用相对路径,所谓相对路径,顾名思义就是自己相对与目标位置。在上例中index.htm中联接的photo.jpg可以使用img/photo.jpg来定位文件,那么不论将这些文件放到哪里,只要他们的相对关系没有变,就不会出错。
另外我们使用“../”来表示上一级目录,“../../”表示上上级的目录,以此类推。
再看个例子,注意所有例子中都是index.htm文件中联接有一张图片photo.jpg。
例:
c:/website/web/index.htm
c:/website/img/photo.jpg
在此例中index.htm中联接的photo.jpg应该怎样表示呢?
错误写法:img/photo.jpg
这种写法是不正确的,正确写法:使用../img/photo.jpg的相对路径来定位文件
总结:通过以上的例子可以发现,在把绝对路径转化为相对路径的时候,两个文件绝对路径中相同的部分都可以忽略,不做考虑。只要考虑他们不同之处就可以了。