zoukankan      html  css  js  c++  java
  • C#--web中上传图片与浏览


    FileUpload控件:
    属性:
    FileName:文件名
    HasFile:bool 是否选中了文件
    FileBytes:要上传文件的二进制数据
    方法:
    SaveAs(string 绝对路径):上传,另存为。

    一、上传到硬盘文件夹
    (一)传单个文件
    第一步:准备好文件及路径:
    //把之前在客户端的文件名给取出来
    string fileName = FileUpload1.FileName;

    //防止文件重名
    fileName = DateTime.Now.ToString("yyyyMMddhhmmsss") + fileName;

    //把相对路径转化为绝对路径
    string path = Server.MapPath("uploads/" + fileName);

    第二步:执行上传:
    //上传
    FileUpload1.SaveAs(path); //参数必须根路径

    注意:
    1.如何防止文件重名?
    2.如何防止同一时间点不同用户传统一文件名?

    protected void Button1_Click(object sender, EventArgs e)
    {
    Label2.Text = FileUpload1.FileName;
    string filename = DateTime.Now.ToString("yyyyMMddhhmmss") + Label2.Text;
    string path = Server.MapPath("/upload/") + filename;
    FileUpload1.SaveAs(path);
    }

    (二)传多个文件:
    思路:遍历表单中所有的FileUpload控件,如果选择文件就上传

    int index = 0;
    foreach (Control ctrl in form1.Controls)
    {
    if (ctrl is FileUpload)
    {
    index++;
    //取得每个上传控件
    FileUpload upload = ctrl as FileUpload;
    //上传控件中选上文件了
    if (upload.HasFile)
    {
    //做文件路径出来
    string path = Server.MapPath("uploads/" + DateTime.Now.ToString("yyyyMMddhhmmss") + index.ToString("00") + upload.FileName);

    //上传
    upload.SaveAs(path);
    }
    }
    }

    我的:

    protected void Button8_Click(object sender, EventArgs e)
    {
    foreach (Control co in form1.Controls)
    {
    if (co is FileUpload)
    {
    FileUpload fiup=co as FileUpload;
    if (fiup.HasFile)//重点
    {
    string filename = DateTime.Now.ToString("yyyyMMddhhmmss") + fiup.FileName;
    string path = Server.MapPath("/upload/") + filename;
    fiup.SaveAs(path);
    }

    }
    }
    }

    二、上传到数据库Image字段:
    (一)传到数据库去
    1.做数据库的操作代码。DA Data
    Image字段对应在程序里是byte[]类型

    2.做界面上的代码。
    a.把界面的值取出来
    FileUpload1.FileBytes - 用来获得上传文件的二进制数据。
    b.送到数据库去

    (二)从数据库中找出来,显示出来
    法一:会生成垃圾文件
    在服务端生成一个JPG,把这个JPG的路径赋给Image控件

    法二:单独做一个用来显示图片二进制数据的页面。把这个页面赋给Image控件。

    我的;

    页面一:

    protected void Button2_Click(object sender, EventArgs e)//上传到数据库
    {
    ImageshujuData da = new ImageshujuData();
    da.Iname = FileUpload1.FileName;
    da.Ipath = FileUpload1.FileBytes;
    ImageshujuDA im=new ImageshujuDA();
    im.Insert(da);
    }
    protected void llimage_Click(object sender, EventArgs e)//从数据库中浏览图片
    {
    Image1.ImageUrl = "Showimage.aspx?id="+TextBox1.Text;
    }

    页面二:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using DA;
    using Data;
    public partial class Showimage : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    string iid=Request["id"].ToString();
    int imid = Convert.ToInt32(iid);
    ImageshujuData da = new ImageshujuDA().Select(imid);
    if (da != null)
    {
    byte[] pic = da.Ipath;
    Response.OutputStream.Write(pic,0,pic.Length);
    Response.End();

    }
    }
    }

    数据库:

    drop table Imageshuju;--删除
    create table Imageshuju--创建
    (
    Iid int identity primary key,
    Iname varchar(100) not null,
    Ipath image
    )

    select * from Imageshuju;--查询

  • 相关阅读:
    控制台输出带颜色的文字
    三次登入冻结操作
    python-装饰器&生成器&迭代器
    python-常用内置函数
    Falsk框架 Session 与 Flask-Session
    Flask框架 请求与响应 & 模板语法
    数据分析 之 NumPy
    Selenium浏览器自动化测试工具
    requests模块 高级应用
    数据解析
  • 原文地址:https://www.cnblogs.com/xianshui/p/4541640.html
Copyright © 2011-2022 走看看