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[];
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 > )
{
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().files;
//拼接请求参数
formDate.append("Userfile", files[]);
//如果有其他参需要一起提交到后台
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 > )
{
var file = httpPostedFile[];
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 == )
{ 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;
}

【c#】winform 上传图片的更多相关文章

  1. C# WinForm 上传图片,文件到服务器的方法Uploader.ashx

    网上有很多方案,起初用时,因为对asp.net不太了解,觉得FTP实现不错,可是后来发现,如果机器在域控下,就会有问题. 一年过去了,asp.net也熟悉了,知道ajax没事应该用ashx,验证码也用 ...

  2. 02-20 winform 上传图片并读取图片

    建立一个windows窗体应用程序,在form1界面中拖入两个按钮和一个pictureBox,通过输入输出流来上传图片和显示图片.需要添加一下openFileDialog1. 界面如下: 在cs中写上 ...

  3. C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体

    //浏览图片 private void btnUp_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialo ...

  4. StreamWriter(ms, new UTF8Encoding(false))可以达到不输出BOM的需求。

    winform 通过webservice向服务器提交图片需要注意的地方 最近一个winform项目中需要通过拍照或者上传本地文件或者截图的方式把产品图片上传到服务器,最后选择了服务器部署webserv ...

  5. C#实现二维码生成与解码

    前几天公司内部分享了一个关于二维码的例子,觉得挺好玩的,但没有提供完整的源码.有时候看到一个好玩的东西,总想自己Demo一个,于是抽空就自己研究了一下. 一.二维码的原理 工欲善其事,必先利其器.要生 ...

  6. C#picturebox控件图片以json格式上传java后台保存

    关于winform上传图片到Java后端,保存到数据库,有多种方法,本文主要介绍利用picturebox控件,点击按钮上传图片,将图片转化为base64格式,以json格式上传到Java后台,再从ja ...

  7. C#基础——winform应用上传图片到SQLServer数据库

    前言 之前通过winform与SQL Server的交互一直局限于文本.数字等信息,都可以通过string的方式来传输,但是比如音乐.图片等特殊格式的文件要如何与SQL Server数据库进行交互呢? ...

  8. C# winform DevExpress上传图片到数据库【转】

    实现功能如下图: 注明:此文使用的是DevExpress控件,winform 原生控件也是一样使用方法. 1.点击选择图片按钮,功能为通过对话框选择要上传的文件,并将该文件在下面的PictureEdi ...

  9. sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)

    sql server 关于表中只增标识问题   由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...

随机推荐

  1. Python3 Tkinter-Scale

    1.创建 from tkinter import * root=Tk() Scale(root).pack() root.mainloop() 2.参数 from tkinter import * r ...

  2. Docker: 如何修改 Docker 的镜像存储位置

    我用的阿里云的服务器, 但是系统盘只有20G, 默认 Docker 的镜像文件是安装在/var/lib 目录下的, 这样的话我根本装不了太多的镜像... 这个必须得改改... 搜了下, 解决方案如下: ...

  3. Simple layout

    body { padding: 0; margin: 0; overflow: hidden; }   div { display: block; position: relative; }   .c ...

  4. 彻底删除win10的 Windows Defender

    使用删除工具和一些教程,都无法删除,最后找到了这个: https://www.newasp.net/soft/351946.html 关闭掉服务后,在C盘全盘搜索,删除,完成了

  5. hadoop参数(未完).md

    我X,有违禁词.麻烦提醒一下哪个词好吗?

  6. Python高级编程-多线程

    (一)进程线程概述: 很多同学都听说过,现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统. 什么叫“多任务”呢?简单地说,就是操作系统可以同时运行 ...

  7. var,let,const,三种申明变量的整理

    javascript,正在慢慢变成一个工业级语言,势力慢慢渗透ios,安卓,后台 首先let,是局部变量,块级作用域:var全局的,const是常量,也就是只读的: 一行demo说明 for (var ...

  8. vim编辑器配置及常用命令

    最近工作不安分, 没有了刚入行时候的锐气, 不知道什么时候开始懈怠起来, 周末在电脑旁边看新闻, 搞笑图片, 追美剧, 一坐就是一天, 很是空虚. 我需要摆脱这种状态, 正好想学习一下安卓底层, An ...

  9. C++ 学习笔记之 STL 队列

    一.  引言 在算法以及数据结构的实现中,很多地方我们都需要队列(遵循FIFO,先进先出原则). 为了使用队列,我们可以自己用数组来实现队列,但自己写太麻烦不说,并且还很容易出错. 好在C++的STL ...

  10. node 第一天

    在开发的过程中,几乎不可能一次性就能写出毫无破绽的程序,断点调试代码是一个普遍的需求. 作为前端开发工程师,以往我们开发的JavaScript程序都运行在浏览器端,利用Chrome提供的开发者工具就可 ...