c#上传文件(二)使用二进制流保存文件

1.html代码:

<asp:FileUpload runat="server" ID="UpLoadFile"/>
        <asp:Button runat="server" ID="btnUpLoad" OnClick="btnUpLoad_Click" Text="上传"/>

html代码

2.后台代码:

public partial class UpLoadFilesByStream : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        { }
        /// <summary>
        /// 上传
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnUpLoad_Click(object sender, EventArgs e)
        {
            //对于文件的格式和大小的判断,在上一篇已经涉及,这里省略。
            if (this.UpLoadFile.HasFile)
            {
                //HttpPostedFile类提供对客户端已上载的单独文件的访问
                HttpPostedFile hpf = this.UpLoadFile.PostedFile;
                //HttpPostedFile hpf = Request.Files[0];
                //文件名
                string fileName = Path.GetFileName(hpf.FileName);
                //文件大小,单位字节
                int fileContentLength = hpf.ContentLength;
                //上传路径
                string filePath = Server.MapPath("/Files/");
                //二进制数组
                byte[] fileBytes = null;
                fileBytes = new byte[fileContentLength];
                //创建Stream对象,并指向上传文件
                Stream fileStream = hpf.InputStream;
                //从当前流中读取字节,读入字节数组中
                fileStream.Read(fileBytes, 0, fileContentLength);
                //全路径(路劲+文件名)
                string fullPath = filePath + fileName;
                //保存到磁盘
                SaveToDisk(fileBytes, fullPath);
            }
        }

        /// <summary>
        /// 保存到磁盘
        /// </summary>
        /// <param name="bytes">字节数组</param>
        /// <param name="saveFullPath">全路径</param>
        /// <returns></returns>
        public void SaveToDisk(byte[] bytes, string saveFullPath)
        {
            var fullPath = Path.GetDirectoryName(saveFullPath);
            //如果没有此文件夹,则新建
            if (!Directory.Exists(fullPath))
            {
                Directory.CreateDirectory(fullPath);
            }
            //创建文件,返回一个 FileStream,它提供对 path 中指定的文件的读/写访问。
            using (FileStream stream = File.Create(saveFullPath))
            {
                //将字节数组写入流
                stream.Write(bytes, 0, bytes.Length);
                stream.Close();
            }
        }
    }

.cs代码

测试通过!

时间: 2024-09-27 19:02:37

c#上传文件(二)使用二进制流保存文件的相关文章

Struts2实现文件上传(二)

Struts2实现文件上传 文件上传页面 file.jsp: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <% String path = request.getContextPath(); Str

[转]ExtJs入门之filefield:文件上传的配置+结合Ajax完美实现文件上传的asp.net示例

原文地址:http://www.stepday.com/topic/?459 作文一个ExtJs的入门汉子,学习起来的确是比较费劲的事情,不过如今在这样一个网络资源如此丰富的时代,依然不是那么难了的.基本上都是Copy过来加以部分改造即可实现自己想要的功能,加之如今的第三方开发者也大发慈悲地写出了API的帮助文档以及示例文档.关于ExtJs内的文件上传,将从以下几个方面进行展开讲解: 一.ExtJs文件上传版面的布局以及配置 因为ExtJs的文件上传组件filefield是基于form表单提交数

webDAV服务的开启以及客户端的上传、下载、删除、新建文件夾、列表的代码(C#)

windows server 2003开启webDAV服务 1. 启动“IIS管理器”选择“WEB服务扩展”,选择“WEBDAV”的允许按钮启动WEBDAV功能 2.建立一个虚拟目录,对应到一个本地目录. 3.启动系统“服务”中的“WebClient”服务 参考网址 WebDAV文档rfc2518    http://www.ietf.org/rfc/rfc2518.txt webdav常用方法和概念总结   http://blog.csdn.net/mahongming/archive/200

rad 上传空间二次开发指导书

1 适用范围 本组件rad组件包的组件,支持.NET Framework 1.1 和 2.0,B/S架构的应用系统. 支持IE.FireFox等多种浏览器. 2 控件功能 点击有上传进度条上传 优点: 1 有ajax的上传实时进度条.对大文件上传 2 对上传文件的大小.种类.上传后的目录保存都封装好了,配制几个属性就行 2.1 高度封装 结构比较简单,已经封装 2.2 使用方法 1 首先安 as装r.a.d UPLOAD 控件,或者安装整个r.a.d control包 2 在开发环境引用这个组件

Asp.net上传文件后台通过二进制流发送到其他Url保存

实际情况一般有单独的站点存放静态文件,比如图片.office文档等.A站点的操作需要上传文件到B站点, 下面介绍一种方法通过System.Net.WebClient类的UploadData方法 . uploadFile.aspx html: <form id="form1" runat="server"> <div> <asp:FileUpload runat="server" ID="fileUp&quo

springboot 头像上传 文件流保存 文件流返回浏览器查看 区分操作系统 windows 7 or linux

1 //我的会员中心 头像上传接口 2 /*windows 调试*/ 3 @Value("${appImg.location}") 4 private String winPathPic; 5 /*linux 使用*/ 6 @Value("${img.location}") 7 private String linuxPathPic; 8 9 @PostMapping(value = "/file") 10 public String file(

Python Selenium 文件上传(二)

今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是如果通过saltstack 远程控制执行时,SendKeys就定位不到窗口了. 所以采用这种新的方式来实现文件上传功能,并完美的解决了这个问题. 具体操作步骤如下: 1.下载工具 AutoIt及使用 AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows

Python WebDriver 文件上传(二)

今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python WebDriver 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是如果通过saltstack 远程控制执行时,SendKeys就定位不到窗口了. 所以采用这种新的方式来实现文件上传功能,并完美的解决了这个问题. 具体操作步骤如下: 1.下载工具 AutoIt及使用 AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Window

jsp实现文件上传(二)用cos组件实现文件上传

jsp表单 <%@ page language="java" pageEncoding="utf-8"%> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> <form action="cos.jsp" method="post" en