当前位置: 移动技术网 > IT编程>开发语言>.net > .net core下对于附件上传下载的实现示例

.net core下对于附件上传下载的实现示例

2018年04月10日  | 移动技术网IT编程  | 我要评论

农村生活片,封神之黄天化,澄通铝型材

本篇主要介绍下文件的上传与下载。分享给大家,具体如下:

文件上传下载也是系统中常用的功能,不啰嗦,直接上代码看下具体的实现。

文件上传

.net core通过 iformfile 接收文件对象,再通过流的方式保存至指定的地方。

[httppost("upload")]
//[disablerequestsizelimit] //禁用http限制大小
[requestsizelimit(100*1024*1024)] //限制http大小
public async task<iactionresult> post(list<iformfile> files)
{
  try
  {
    if (files == null || !files.any())
      return assertnotfound(new responsefileresult { result = false, code = responsecode.invalidparameters, errormessage = "附件不能为空" });


    string filepath = path.combine(directory.getcurrentdirectory(), basefile, $@"template");
    if (!directory.exists(filepath))
      directory.createdirectory(filepath);

    var result = new responsefileresult();
    var filelist = new list<fileresultmodel>();

    foreach (var file in files)
    {
      var filemodel = new fileresultmodel();
      var filename = contentdispositionheadervalue
              .parse(file.contentdisposition)
              .filename
              .trim('"');
      var newname = guid.newguid().tostring() + path.getextension(filename);
      var filefullpath = path.combine(filepath, $@"{newname}");

      using (filestream fs = new filestream(filefullpath, filemode.create))//system.io.file.create(filefullpath)
      {
        file.copyto(fs);
        fs.flush();
      }


      filelist.add(new fileresultmodel { name = filename, size = file.length, url = $@"/file/download?filename={newname}" });
    }
    result.fileresultlist = filelist;
    return assertnotfound(result);
  }
  catch(exception ex)
  {
    return assertnotfound(new responsefileresult { result = false, code = responsecode.unknownexception, errormessage = ex.message });
  }
}

其中http会默认限制一定的上传文件大小,可通过 [disablerequestsizelimit] 禁用http限制大小,也可通过 [requestsizelimit(1024)] 来指定限制http上传的大小。

文件下载

相对于上传,下载就比较简单了,找到指定的文件,转换成流,通过.net core自带的 file 方法返回流文件,完成文件下载:

[httpget("download")]
public async task<iactionresult> get(string filename)
{
  try
  {
    var addrurl = path.combine(directory.getcurrentdirectory(), basefile, $@"{filename}");
    filestream fs = new filestream(addrurl, filemode.open);
    return file(fs, "application/vnd.android.package-archive", filename);
  }
  catch(exception ex)
  {
    return notfound();
  }
}

总结

文件的上传下载的基本操作简单介绍了下,大家可以尝试下。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网