webApi2 上传大文件代码


上传大文件,取消内存缓存:

    GlobalConfiguration.Configuration.Services.Replace(typeof(IHostBufferPolicySelector), new CustomPolicy());
    public class CustomPolicy : WebHostBufferPolicySelector
    {
        #region Public Methods and Operators

        public override bool UseBufferedInputStream(object hostContext)
        {
            return false;
        }

        #endregion
    }

上传代码:

        [HttpPost]
        [Route("api/upload")]
        public async Task<int> PostFormData() {
            // Check if the request contains multipart/form-data.
            if(!Request.Content.IsMimeMultipartContent()) {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }
        
            string root = HttpContext.Current.Server.MapPath("~/Uploads/");
            MyStreamProvider streamProvider = new MyStreamProvider(root);
            //var provider = new MultipartFormDataStreamProvider(root);

            try {
                // Read the form data.
                await Request.Content.ReadAsMultipartAsync(streamProvider);

                // This illustrates how to get the file names.
                //foreach(MultipartFileData file in streamProvider.FileData) {
                //    Trace.WriteLine(file.Headers.ContentDisposition.Size);
                //    Trace.WriteLine("Server file path: " + file.LocalFileName);
                //}
                FileInfo fileInfo = new FileInfo(streamProvider.FileData[0].LocalFileName);

                
            } catch(System.Exception e) {
                throw e;
            }
        }

经测试上传:大文件,内存消耗不多,CPU有点上浮,上传速度有点慢,但比较稳定


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM