asp.net 写的图片上传页面

本文介绍了一个ASP.NET中实现图片上传的例子,包括aspx页面和cs后台代码。该示例展示了如何处理文件上传,验证文件类型及大小,并在服务器上保存图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的相对路径来定位文件

  

  总结:通过以上的例子可以发现,在把绝对路径转化为相对路径的时候,两个文件绝对路径中相同的部分都可以忽略,不做考虑。只要考虑他们不同之处就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值