【c#】上传图片(包含ajax上传图片)

1、拖拽上传图片

1.1、后台代码中修改窗体属性,添加 AllowDrop = true 

1.2、给窗体添加拖拽事件,在事件列表找到拖拽 双击即可:

DragDrop 生成的方法中添加代码如下:

 private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                e.Effect = DragDropEffects.Move;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }

在 DragEnter 方法中添加代码如下: 

private void Form1_DragEnter(object sender, DragEventArgs e)
        {
            //判断
            string[] files = e.Data.GetData(DataFormats.FileDrop) as string[];
            string file = files[0];
            if (!file.ToLower().EndsWith(".png") && !file.ToLower().EndsWith(".jpg"))
            {
                MessageBox.Show("需要图片文件!");
                return;
            }
            //PictureBox控件显示图片
            Image.Load(file);
        }

2、点击按钮上传图片

2.1、官方文档地址:https://msdn.microsoft.com/zh-cn/library/system.windows.controls.openfiledialog.filter(v=VS.95).aspx
2.2、在窗体中添加控件 OpenFileDialog ,提供了提示用户打开文件的功能。按钮添加代码如下:
 private void button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                //PictureBox控件显示图片
                Image.Load(openFileDialog.FileName);
            }
        }
2.3、上传图片并保存
private void button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                //PictureBox控件显示图片
                Image.Load(openFileDialog.FileName);
                //获取用户选择文件的后缀名 
                string extension = Path.GetExtension(openFileDialog.FileName);
                //声明允许的后缀名 
                string[] str = new string[] { ".gif", ".jpge", ".jpg", ".png" };
                if (!str.Contains(extension))
                {
                    MessageBox.Show("仅能上传gif,jpge,jpg格式的图片!");
                }
                else
                {
                    //获取用户选择的文件,并判断文件大小不能超过20K,fileInfo.Length是以字节为单位的 
                    FileInfo fileInfo = new FileInfo(openFileDialog.FileName);
                    if (fileInfo.Length > 20480)
                    {
                        MessageBox.Show("上传的图片不能大于20K");
                    }
                    else
                    {
                        //绝对路径
                        string image = openFileDialog.FileName;
                        //  是指XXX.jpg
                        string picpath = openFileDialog.SafeFileName;
                        File.Copy(openFileDialog.FileName, Application.StartupPath + "\\Image\\" + picpath);
                    }
                }
            }
        }

 MVC上传图片

HTML代码

 <input name="Userfile" id="Userfile" type="file"></span>

Js代码

var formDate = new FormData();
var files = $("#Userfile").get(0).files;
//拼接请求参数
formDate.append("Userfile", files[0]);
//如果有其他参需要一起提交到后台
formDate.append("location", location);
 $.ajax({
            type: "POST",
            url: url,
            contentType: false,
            cache: false,
            processData: false,           
            data: formDate,
            error: function (request) {
               
            },
            success: function (data) {
               
            }
        });

Web API后端代码

  [HttpPost]
  public string Save()
  {
        //图片存储路径
        string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "img/";
         //用户提交的数据
          var Data = System.Web.HttpContext.Current.Request.Form;
          string filesrc = string.Empty;
          string src = string.Empty;
          //获取上传的文件
          var httpPostedFile = HttpContext.Current.Request.Files;
          if (httpPostedFile != null && httpPostedFile.Count > 0)
          {
                var file = httpPostedFile[0];
                string imgType = Path.GetExtension(file.FileName);
                //限制文件上传类型
                if (imgType.Contains(".jpg") || imgType.Contains(".png") || imgType.Contains(".bmp"))
                {
                    string FileName = Guid.NewGuid().ToString() + imgType;
                    filesrc = path + FileName;
                    src = "/images/" + FileName;
                    // 如果目录不存在则要先创建
                    if (!Directory.Exists(uploadPath))
                    {
                        Directory.CreateDirectory(uploadPath);
                    }
                    file.SaveAs(filesrc);

                }
            }
            if (!string.IsNullOrEmpty(src))
            {
                //存储图片路径到数据库
            }
            return "上传成功后的图片地址";
 }

Mvc端上传代码

        /// <summary>
        /// 图片上传
        /// </summary>
        /// <returns></returns>
        public string UploadImage()
        {
            var file = Request.Files.Get("file");
            string uid = file.FileName;
            if (!uid.IsEmpty())//服务器是否存在该文件
            {
                return "未获取到上传的图片文件信息";
            }
            if (file.ContentLength == 0)
            {

                return "文件不存在";
            }
            // 获取上传的图片名称和扩展名称
            string fileFullName = Path.GetFileName(file.FileName);
            string fileExtName = Path.GetExtension(fileFullName);
            if (fileExtName.Contains(".jpg") || fileExtName.Contains(".png") || fileExtName.Contains(".bmp"))
            {
                return "文件类型错误";
            }
            //获取当前项目所在的物流路径
            string path = Request.PhysicalApplicationPath;
            var src = path + "/images/";

            // 如果目录不存在则要先创建
            if (!Directory.Exists(src))
            {
                Directory.CreateDirectory(src);
            }
            file.SaveAs(src + fileFullName);
            return src + fileFullName;
        }

 

posted @ 2017-09-28 15:47  ice.ko  阅读(15065)  评论(0编辑  收藏  举报