Ejemplo n.º 1
0
        public async Task <object> UploadFilesAsync(List <IFormFile> files)
        {
            uploads = new List <uploadStatus>();
            List <Task> tasks = new List <Task>();

            foreach (var formFile in files)
            {
                string       fileName = ContentDispositionHeaderValue.Parse(formFile.ContentDisposition).FileName.Trim('"');
                uploadStatus file     = new uploadStatus();
                file.url = fileName;
                string targetPath = uploadTarget + fileName;
                try
                {
                    using (var stream = new FileStream(targetPath, FileMode.Create))
                    {
                        string newFile  = uploadTarget + fileName;
                        Task   copyFile = formFile.CopyToAsync(stream);// <<==== why is this erroring out here.
                        tasks.Add(copyFile);
                        file.success = true;
                    }
                }
                catch (Exception err)
                {
                    file.success      = false;
                    file.errorMessage = err.Message;
                }
                uploads.Add(file);
            }

            /* merge all uploads  */
            Task mergedTasks = Task.WhenAll(tasks);

            return(mergedTasks);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 大文件上传上下文类,构造函数
        /// </summary>
        /// <param name="page">上传文件的页面</param>
        /// <param name="TempFileDir">上传文件存放的临时目录</param>
        internal UploadContext(System.Web.UI.Page page, string TempFileDir)
        {
            m_TempFileDir = TempFileDir;
            if (m_TempFileDir.Trim()[m_TempFileDir.Trim().Length - 1] != '\\')
            {
                m_TempFileDir = m_TempFileDir.Trim() + "\\";
            }
            m_GUID = Guid.NewGuid().ToString();

            page.ClientScript.RegisterHiddenField("UploadID", m_GUID);
            page.Response.Expires = 1;
            m_status = uploadStatus.Initializing;
        }