asp.net上传文件

第一种方法

前端:

<div>

单文件上传

<form enctype="multipart/form-data" method="post" action="upload.aspx">

<input type="file" name="files" />

<input type="submit" value="上传" />

</form>

</div>

后端:

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

public partial class upload_upload : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

HttpContext context = HttpContext.Current;

context.Response.ContentType = "text/plain";

//获取所有的上传文件

//如果上传的文件超过了4M,则会报异常[超过了最大请求长度。],需要在Web.config配置

HttpFileCollection hfc = context.Request.Files;

//如果是hfc.Count为0,则可以认为是直接请求该ashx处理程序

for (int i = 0; i < hfc.Count; i++)

{

HttpPostedFile hpf = hfc[i];

if (hpf.ContentLength > 0)

{

//大小限制

int maxSize = 2 * 1024 * 1024; //最大是2M(转换为字节)

if (hpf.ContentLength > maxSize)

{

context.Response.Write("上传文件大小超出限制");

return;

}

//扩展名限制

string[] exts = { "image/jpg", "image/jpeg", "image/gif", "image/png" };

if (!exts.Contains(hpf.ContentType.ToLower()))

{

context.Response.Write("必须上传图片文件");

return;

}

string fileName = Path.GetFileName(hpf.FileName);

hpf.SaveAs(context.Server.MapPath("~/upload/" + fileName));

}

}

获取指定name的文件上传

该方式如果是html5的<input type="file" name="files" multiple />则始终是获取第一个上传的文件,multiple

是支持多个文件上传,所以如果上传文件多于一个,则会丢失

//HttpPostedFile hpf = context.Request.Files["files"];

//if (hpf!= null && hpf.ContentLength > 0)

//{

// hpf.SaveAs(context.Server.MapPath("~/UpLoad/" + Path.GetFileName(hpf.FileName)));

//}

context.Response.Write("上传成功");

}

}

第二种方法

前端(1)

<div id="divImg">

<input type="file" class="file" name="file" multiple="multiple" id="file"/>

<button type="button" οnclick="uploadFile()">上传</button>

</div>

js

function uploadFile(){

let files = $("#file").prop("files");

let formData = new FormData();

// 对每个文件进行循环处理

for (let i = 0; i < files.length; i++) {

let file = files[i];

// 添加文件到formData

formData.append('files['+i+']', file, file.name);

}

$.ajax({

url: ctx + "/file/upload",

type: 'POST',

data: formData,

processData: false,

contentType: false,

async: false,

cache: false,

success: function(data) {

console.log(data);

}

});

}

前端(2)

js

<form id="fileUploadForm" enctype="multipart/form-data">

<input type="file" id="fileInput">

<button type="submit">上传</button>

</form>

<script>

$(document).ready(function() {

$('#fileUploadForm').submit(function(e) {

e.preventDefault();

var fileInput = document.getElementById('fileInput');

var file = fileInput.files[0];

var reader = new FileReader();

reader.onload = function(e) {

var fileData = e.target.result;

var formData = new FormData();

formData.append('file', file);

$.ajax({

url: 'upload.php',

type: 'POST',

data: formData,

processData: false,

contentType: false,

success: function(response) {

console.log(response);

},

error: function(xhr, status, error) {

console.error(error);

}

});

};

后端同每一种方法

相关推荐
码事漫谈7 分钟前
用 Gitea 给 StackEdit 搭一个「图床」- 详细步骤截图
后端
千码君201640 分钟前
Go语言:常量计数器iota的意义
开发语言·后端·golang·状态码·const·iota·常量
IT_陈寒1 小时前
Python开发者必看:这5个鲜为人知的Pandas技巧让你的数据处理效率提升50%
前端·人工智能·后端
豆苗学前端1 小时前
写给女朋友的第一封信,测试方法概论
前端·后端·设计模式
武子康2 小时前
大数据-140 ClickHouse CollapsingMergeTree详解 外部数据源最小闭环HDFS/MySQL/Kafka
大数据·后端·nosql
m0_736927042 小时前
使用 Python 将 PowerPoint 转换为 Word 文档
java·开发语言·后端·职场和发展·c#
杜子不疼.2 小时前
【Rust】路由匹配与参数提取:从 match 语句到 axum 的类型魔法
开发语言·后端·rust
qq_12498707532 小时前
基于Flask的穷游网酒店数据分析系统(源码+论文+部署+安装)
后端·python·flask·毕业设计
稚辉君.MCA_P8_Java2 小时前
Java 基本数据类型 - 四类八种
java·linux·后端·mysql·架构
爱吃烤鸡翅的酸菜鱼2 小时前
如何掌握【Java】 IO/NIO设计模式?工厂/适配器/装饰器/观察者模式全解析
java·开发语言·后端·设计模式·nio