zoukankan      html  css  js  c++  java
  • 【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;
            }
  • 相关阅读:
    Python 异常处理
    Python File(文件) 方法
    python 文件定位
    globals() 和 locals() 函数
    python dir()函数
    python from…import* 语句
    python from…import 语句
    Python 模块
    python 匿名函数
    python 函数参数
  • 原文地址:https://www.cnblogs.com/miskis/p/7607024.html
Copyright © 2011-2022 走看看