隐藏

.net6+ajax上传图片

发布:2023/2/10 23:40:32作者:管理员 来源:本站 浏览次数:575

html


文件名:<input type="text" name="filename" />
文件: <input type="file" name="my_file" />


ajax

UploadImg:function(){
                    var formData = new FormData($("#form_avatar")[0]);
                    $.ajax({
                        url: "/Privacy/UploadUserImg",
                        type: "POST",
                        headers: { "Authorization": 'Bearer ' + token },
                        data: formData,
                        contentType: false,
                        processData: false,
                        success: function (data) {
                            console.log(data);
                            if(data.success){
                                $('#head-view').attr('src',data.response);
                            }
                        },
                        error: function (e) {
                            console.log("系统出错!");
                            console.log(e.error);
                        }
                    });
                }



  MVC后端     

        /// <summary>

        /// 上传文件
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public HttpResponseMessage UploadFile()
        {
            #region Api处理模块
            try
            {
                //获取上传文件
                IFormFileCollection files = HttpContext.Request.Form.Files;
                //判断是否有文件上传
                if (files.Count == 0)
                {
                    return new HttpResponseMessage(HttpStatusCode.BadRequest);
                }
               


                for (int i = 0; i < files.Count; i++)
                {
                    //设置文件上传路径
                    string fileHead = $"/FileUpload/{DateTime.Now:yyyyMMdd}";
                    string fullFileName = string.Format("{0}/{1}", fileHead, Path.GetFileName(files[i].FileName));
                    ////创建文件夹,保存文件
                    string path = Path.GetDirectoryName(fullFileName);
                    #region 检查上传的物理路径是否存在,不存在则创建
                    //获取当前项目所在的物流路径
                     path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase+ path;
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    #endregion
                    //保存文件  文件存在则先删除原来的文件
                    if (System.IO.File.Exists(fullFileName))
                    {
                        System.IO.File.Delete(fullFileName);
                    }
                    //将流写入文件
                    using (Stream stream = files[i].OpenReadStream())
                    {
                        // 把 Stream 转换成 byte[]
                        byte[] bytes = new byte[stream.Length];
                        stream.Read(bytes, 0, bytes.Length);
                        // 设置当前流的位置为流的开始
                        stream.Seek(0, SeekOrigin.Begin);
                        // 把 byte[] 写入文件
                        FileStream fs = new FileStream(path+$"/{DateTime.Now:yyyyMMddHHmm}{Path.GetExtension(files[i].FileName)}", FileMode.Create);
                        BinaryWriter bw = new BinaryWriter(fs);
                        bw.Write(bytes);
                        bw.Close();
                        fs.Close();
                    }


                }
                return new HttpResponseMessage(HttpStatusCode.OK);
            }
            catch (Exception ex)
            {
                return new HttpResponseMessage(HttpStatusCode.BadRequest);
            }
            #endregion
        }