惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy & Cybersecurity Law Blog
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
罗磊的独立博客
F
Fortinet All Blogs
T
Threatpost
Y
Y Combinator Blog
博客园_首页
美团技术团队
Security Latest
Security Latest
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
V
V2EX - 技术
The Cloudflare Blog
L
LINUX DO - 热门话题
博客园 - 司徒正美
Jina AI
Jina AI
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
The Hacker News
The Hacker News
P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
Latest news
Latest news
NISL@THU
NISL@THU
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cisco Blogs
雷峰网
雷峰网
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
W
WeLiveSecurity
D
DataBreaches.Net
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
TaoSecurity Blog
TaoSecurity Blog
S
Securelist
Help Net Security
Help Net Security

博客园 - Magic.Z

几种可能使 Windows 7 睡眠后自动唤醒的原因 IIS 7.5 下载文件遇到 404.3 试用 Entity Framework Power Tools CTP1 通过 WebBrowser 获取网页截图 开启 IE9 导航声音 WPF 实现屏幕文字提示 - Magic.Z - 博客园 AJAX 网页保留浏览器前进后退等功能 ADO.NET Entity Framework Feature 中的 CodeFirst 创建数据库和实体类 赠送 MSDN 订阅激活卡 在 ASP.NET WebForm 中使用 Route 在 ASP.NET MVC 中创建自定义 HtmlHelper 注意防范ASP.NET中可能导致信息泄漏的漏洞 在 ASP.NET MVC Web 应用程序中输出 RSS Feeds 用 Windows Media Center 浏览互联网视频 WebMatrix 简介 - Magic.Z 打印网页中的 GridView - Magic.Z ASP.NET 网站后台任务 - Magic.Z Visual Studio 2010 中的 MSDN 帮助文档 - Magic.Z 在 ADO.NET Entity Framework 4 中使用枚举 - Magic.Z
WPF 客户端上传文件到 ASP.NET MVC 网站
Magic.Z · 2011-04-19 · via 博客园 - Magic.Z

本文介绍客户端向ASP.NET MVC网站上传文件的一种方法。上传的文件比较小时可以用到。如果文件比较大,通过FTP协议上传也许更适合一些。

服务端

既然客户端要向服务端传文件,服务端得能收文件才行。在ASP.NET MVC网站中,要接收客户端的文件上传很简单。因为不用给客户端返回视图,只要和客户端通信即可,所以不用新建View。新建一个controller增加一个action,或者在现有controller中增加一个action用来处理文件上传。

 1 /// <summary>
 2 /// 上传
 3 /// </summary>
 4 /// <param name="file">上传的文件信息</param>
 5 /// <returns></returns>
 6 [HttpPost]  // 允许以POST方式提交数据
 7 public int Upload(HttpPostedFileBase file)
 8 {
 9     file.SaveAs(Server.MapPath(String.Format("/UploadFiles/{0}", file.FileName)));  // 保存文件
10     return 0;  // 返回数据给客户端
11 }

参数名file也是POST数据时的key名,客户端在上传数据时也要带这个名字。

客户端

客户端使用WPF或是WinForm区别不大,主要是获取要上传文件的路径,然后将该文件上传到服务器。

 1 /// <summary>
 2 /// 选择文件按钮
 3 /// </summary>
 4 /// <param name="sender"></param>
 5 /// <param name="e"></param>
 6 private void select_Click(object sender, RoutedEventArgs e)
 7 {
 8     OpenFileDialog dialog = new OpenFileDialog();  // 初始化对话框
 9     dialog.Multiselect = false;  // 不允许选中多个文件
10     dialog.ShowDialog();  // 显示对话框
11     filePath.Content = dialog.FileName;  // 把文件路径显示在界面上
12     upload.IsEnabled = true;  // 允许按上传按钮
13 }
14 
15 /// <summary>
16 /// 上传文件按钮
17 /// </summary>
18 /// <param name="sender"></param>
19 /// <param name="e"></param>
20 private void upload_Click(object sender, RoutedEventArgs e)
21 {
22     string url="http://localhost:9741/Sample/Upload";  // 上传文件的服务端URL
23     WebClient webClient = new WebClient();  // 初始化WebClient
24     webClient.UploadFile(url, filePath.Content.ToString());  // 上传文件
25 }

WebClient上传文件时默认的key就是file,因此这里没有显式的设置。如果使用方式上传数据,可能需要提供这个名字,以使服务器能够接收到文件。

在这个例子中,服务端没有对客户端或上传的文件进行验证。在正式使用时,应考虑到安全因素。

示例下载

本文适用于 .NET Framework 4