首页 > 编程语言 >C#文件上传与下载

C#文件上传与下载

时间:2023-12-18 17:33:50浏览次数:30  
标签:文件 string filePath C# fileName 上传 response 下载

上传文件 <input type="file" id="file" />
<input type="button" id="upload" value="上传文件" />

<script>
//上传
$("#upload").click(function () {
var formData = new FormData();
var file = document.getElementById("file").files[0];
formData.append("fileInfo", file);
$.ajax({
url: "../api/File/UploadFile",
type: "POST",
data: formData,
contentType: false,//必须false才会自动加上正确的Content-Type
processData: false,//必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
success: function (data) {
alert(data);
},
error: function (data) {
alert("上传失败!");
}
});
});
</script>


/// <summary>
/// 上传文件
/// </summary>
[HttpPost]
public string UploadFile()
{
string result = string.Empty;
try
{
string uploadPath = HttpContext.Current.Server.MapPath("~/App_Data/");
HttpRequest request = System.Web.HttpContext.Current.Request;
HttpFileCollection fileCollection = request.Files;
// 判断是否有文件
if (fileCollection.Count > 0)
{
// 获取文件
HttpPostedFile httpPostedFile = fileCollection[0];
string fileExtension = Path.GetExtension(httpPostedFile.FileName);// 文件扩展名
string fileName = Guid.NewGuid().ToString() + fileExtension;// 名称
string filePath = uploadPath + httpPostedFile.FileName;// 上传路径
// 如果目录不存在则要先创建
if (!Directory.Exists(uploadPath))
{
Directory.CreateDirectory(uploadPath);
}
// 保存新的文件
while (File.Exists(filePath))
{
fileName = Guid.NewGuid().ToString() + fileExtension;
filePath = uploadPath + fileName;
}
httpPostedFile.SaveAs(filePath);
result = "上传成功";
}
}
catch (Exception)
{
result = "上传失败";
}
return result;
}



<form action="../api/File/DownloadFile" method="get" id="form">
下载文件 <input type="text" id="name" name="fileName" value="222" />
</form>
<input type="button" id="download" value="下载文件" />

<script>
//下载
$("#download").click(function () {
var form = $("#form");
form.submit();
});
</script>


/// <summary>
/// 下载文件
/// </summary>
[HttpGet]
public void DownloadFile()
{
var request = HttpContext.Current.Request;
NameValueCollection nvCollection = request.Params;
string fileName = nvCollection.GetValues("fileName")[0];
string filePath = Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data/"), fileName);
if (File.Exists(filePath))
{
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.ClearHeaders();
response.ClearContent();
response.Buffer = true;
response.AddHeader("content-disposition", string.Format("attachment; FileName={0}", fileName));
response.Charset = "GB2312";
response.ContentEncoding = Encoding.GetEncoding("GB2312");
response.ContentType = MimeMapping.GetMimeMapping(fileName);
response.WriteFile(filePath);
response.Flush();
response.Close();
}
}

 

参考文章:http://blog.ncmem.com/wordpress/2023/12/18/c%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e4%b8%8e%e4%b8%8b%e8%bd%bd/

欢迎入群一起讨论

 

 

标签:文件,string,filePath,C#,fileName,上传,response,下载
From: https://www.cnblogs.com/songsu/p/17911753.html

相关文章

  • HighCharts 以轴标签为标签+蓝色圆圈跟随鼠标移动
    需求:画一个蓝色圆圈跟随鼠标移动,点击图表并保存这个点,点的右侧有以轴标签为标签的标签分析:调用load事件,使用renderer画个圆圈跟随鼠标,点击图标保存点用click事件,在click事件里使用renderer画一个圆和标签,标签以轴为单位解决:源代码:示例:HighCharts以轴标签为标签及蓝色圆圈跟随鼠......
  • wgcloud运维部署 - 配置使用https证书
    https://www.wgstart.com/help/docs137.html......
  • 无涯教程-Java - Dictionary 类函数
    字典(Dictionary)是一个抽象类,代表一个键/值对,其操作非常类似于Map。下面列出了Dictionary定义的抽象方法-Sr.No.Method&Remark1Enumerationelements()返回字典中包含的值的枚举。2Objectget(Objectkey)返回包含与键关联的值的对象,如果键不在字典中,则返回空对象......
  • DP1363F高性能、多协议NFC读卡IC
     DP1363F是一款高度集成的非接触读写芯片,集强大的多协议支持、最高射频输出功率,以及突破性技术低功耗卡片检测等优势于一身,满足市场对更高集成度、更小外壳和互操作性的需求,适用于银行、电子政务、交通、移动支付等众多基础设施应用。相关参数DP1363F支持下列操作模式:•读写......
  • 视频监控管理平台/智能监测/检测系统EasyCVR出现内核报错导致无法播放,该如何解决?
    GB28181视频监控/安防视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,安防监控汇聚平台EasyCVR可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支持视频定时轮播。视频监控管理平台EasyCVR支持多种播放协议,包括:H......
  • mac安装php-kafka
    首先,安装文档在: 如何使用PHPSDK接入消息队列Kafka版并收发消息_云消息队列Kafka版(ApsaraMQfor Kafka)-阿里云帮助中心(aliyun.com)但是按照这个文档,存在一个问题,一直报错:1...2checkingforrdkafkasupport...yes,shared3checkingforlibrdkafka/rdkafka.h"i......
  • Istio从入门到精通—— 流量治理的原理 —— VirutalService —— HTTPRedirect
    流量治理的原理——VirutalService——HTTPRedirecthttps://istio.io/latest/docs/reference/config/networking/virtual-service/#HTTPRedirect HTTPRedirectcanbeusedtosenda301redirectresponsetothecaller,wheretheAuthority/HostandtheURIinthe......
  • nmcli 报错
    nmcliconnectionmodifyens32ipv4.addresses192.168.10.10/24因为原本就存在网卡配置文件,所以准备直接只修改一个ip地址然后报错了nmcliconnectionupens32^C#重启网卡的时候,一直卡在一个界面查看配置文件,发现BOOTPROTO=dhcp修改网卡类型[[email protected]......
  • 自定义元素宽高比例(aspect-ratio)与 @supports兼容支持和图片裁剪(object-fit)的用法
    1、aspect-ratio宽高比例属性aspect-ratio:1/1;aspect-ratio:16/9;aspect-ratio:0.5;//等同于1/2如下效果将为每个box子元素设置aspect-ratio:3/2,如下图所示: 2、object-fit图片裁剪object-fit:contain;保持宽高比,缩放保持图片完整性。object-fit:cover......
  • Istio从入门到精通—— 流量治理的原理 —— VirutalService —— TLSMatchAttributes
    流量治理的原理——VirutalService—— TLSMatchAttributeshttps://istio.io/latest/docs/reference/config/networking/virtual-service/#TLSMatchAttributesTLSconnectionmatchattributes.FieldTypeDescriptionRequiredsniHostsstring[]SNI(s......