用最基础的 ASP.NET ASHX 实现一个文件上传功能

因为各种限制,不能直接向被远程操作的服务器(Windows)传输文件,但端口没有做限制,剪贴板也可以操作的

本来是想用 IIS 自带的 FTP,但是折腾半天也没成功

故想到用 IIS 搭建一个最简单的 ASP.NET 网站,建立一个 ASHX 来作为页面和接收上传文件

1、那么就建立一个简单的 ASHX,保存为文件如:test.ashx,将 IIS 站点指向该文件所在目录,在远程电脑上访问即可。

复制代码
<%@ WebHandler Language="C#" Class="TestHandler" %>

using System;
using System.Web;
using System.IO;

public class TestHandler : IHttpHandler  
{
    public void ProcessRequest(HttpContext context)  
    {
        context.Response.ContentType = "text/html;charset=utf-8";
        
        if (context.Request.Files.Count > 0)
        {
            HttpPostedFile file = context.Request.Files[0];
            string fileName = Path.GetFileName(file.FileName);
            string path = context.Server.MapPath("/" + fileName);
            file.SaveAs(path);
            context.Response.Write(@"success: " + path);
        }
        
        context.Response.Write(@"
        <form action='test.ashx' method='post' enctype='multipart/form-data'>
            <input type='file' name='upload_file' />
            <input type='submit'>
        </form>");
    }
    
    public bool IsReusable { get { return false; } }
}
复制代码

2、当上传大文件时,可能会遇到大小限制时,可以再建立或修改 web.config 文件:

复制代码
<configuration>
    <system.web>
        <customErrors mode="Off"/>
        <!-- 最大请求长度,单位为KB(千字节),默认为4M,设置为1G,上限为2G -->
        <httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
    </system.web>
    <system.webServer> 
        <!-- 允许上传文件长度,单位字节(B),默认为30M,设置为1G,最大为2G -->
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="1073741824"/>
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>
复制代码

参考:

https://www.cnblogs.com/g1mist/p/3222255.html

https://blog.csdn.net/HerryDong/article/details/100549765

https://www.cnblogs.com/xielong/p/10845675.html

posted @   不是豆豆  阅读(498)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2013-12-08 【转】jQuery数组处理详解(含实例演示)
2013-12-08 EF执行存储过程
2013-12-08 【转】sql server存储过程中SELECT 与 SET 对变量赋值的区别
2013-12-08 【备用】SQL SERVER存储过程执行速度慢的问题
2013-12-08 【转】SQL SERVER 获取存储过程返回值
2013-12-08 t-sql的一些经验
友情链接:迷途


点击右上角即可分享
微信分享提示