c# 文件上传与下载
文件上传:
API 上传的方法:
//上传的文件格式
public string[] ExtentsfileName = new string[] { ".doc", ".xls", ".png", ".jpg" };
//路径
public string UrlPath = "/Upload/";
/// <summary>
///响应对象 ,使用前先赋值
/// </summary>
public HttpResponse Response = HttpContext.Current.Response;
public HttpRequest Request = HttpContext.Current.Request;
//上传文件
[HttpPost]
public FileResult UpLoad()
{
if (Request.Files.Count > 0)
{
string FileUrlResult = "";
foreach (string fn in Request.Files)
{
var file = Request.Files[fn];
var extenfilename = Path.GetExtension(file.FileName);
//判断 路径是否存在
string path = HttpContext.Current.Server.MapPath(UrlPath);
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
if (ExtentsfileName.Contains(extenfilename.ToLower()))
{
string urlfile = UrlPath + DateTime.Now.ToFileTime() + extenfilename;
string filepath = HttpContext.Current.Server.MapPath(urlfile);
file.SaveAs(filepath);
}
else
{
return new FileResult() { Code = -1, Msg = "只允许上传指定格式文件" + string.Join(",", ExtentsfileName), Url = "" };
}
}
return new FileResult() { Code = 0, Msg = "上传成功", Url = FileUrlResult };
}
else
{
return new FileResult() { Code = -1, Msg = "不能上传空文件", Url = "" };
}
}
上传文件 客户端
使用 ajax 方法进行文件上传
<input type="file" id="f1" />
<input type="button" value="文件上传" onclick="ff()" />
<script>
//文件上传
function ff() {
var formData = new FormData();
var file = document.getElementById("f1").files[0];
formData.append("fileInfo", file);
$.ajax({
url: "http://localhost:62381/api/Default/UpLoad",
type: "POST",
data: formData,
contentType: false,//必须false才会自动加上正确的Content-Type
processData: false,//必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
success: function (data) {
if (data.Code < 0)
alert(data.Msg)
else
alert(data.Url)
},
error: function (data) {
alert("上传失败!");
}
});
}
</script>
MVC 上传文件的方法:
public ActionResult File(HttpPostedFileBase file)
{
//using System.IO;
//上传路径
string path = Server.MapPath("~/kuk");
string filename = Path.Combine(path, file.FileName);
file.SaveAs(filename);
//上传成功 返回 ok
return Content("ok");
}
视图:

文件下载:
API 下载方法:
/// <summary>
/// 下载文件 使用过DEMO
/// using System.IO;
[HttpGet]
public void DownLoad(string Url)
{
string filePath = HttpContext.Current.Server.MapPath(Url);
FileInfo fi = new FileInfo(filePath);
DownLoad(fi.Name, fi.FullName);
}
/// <param name="downFileName">下载后保存名</param>
/// <param name="sourceFileName">服务器端物理路径</param>
public void DownLoad(string downFileName, string sourceFileName)
{
if (File.Exists(sourceFileName))
{
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", string.Format("attachment; FileName={0}", downFileName));
Response.Charset = "GB2312";
Response.ContentEncoding = Encoding.GetEncoding("GB2312");
Response.ContentType = MimeMapping.GetMimeMapping(downFileName);
Response.WriteFile(sourceFileName);
Response.Flush();
Response.Close();
}
}
客户端显示:

MVC 下载方法:
// 要引用 using System.IO;
public ActionResult FileDownload()
{
string path = Server.MapPath("/kuk/");
FileStream fs = new FileStream(path, FileMode.Open);
return File(fs, "image/gif", "a.jpg");
}

参考文章:http://blog.ncmem.com/wordpress/2023/12/07/c-%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e4%b8%8e%e4%b8%8b%e8%bd%bd/
欢迎入群一起讨论

浙公网安备 33010602011771号