C#图片上传教程:PC与APP跨域实现
146 浏览量
更新于2024-09-03
收藏 117KB PDF 举报
"C#实现图片上传(PC端和APP)保存及跨域上传说明"
本文将详细介绍如何在C#环境中实现图片的上传功能,适用于PC端和移动应用(APP),并涵盖跨域上传的处理。首先,我们关注PC端的图片上传流程。
在PC端,用户通常通过Web界面进行图片上传。在HTML页面中,我们可以设置一个`<input>`标签来允许用户选择文件。例如,使用`type="file"`属性指定为文件上传,加上`multiple`属性则可以让用户选择多张图片:
```html
<input id="BusRoute" type="file" class="btn btn-default btn-lg" style="height:34px;padding-top:5px;padding-bottom:5px;" multiple/>
```
当用户选择文件后,这些文件会被发送到服务器端。在C#的后台代码中,可以通过`HttpContext.Current.Request.Files`来获取上传的文件集合。`HttpFileCollection`对象包含了所有上传的文件信息。
```csharp
HttpFileCollection pcFileColl = HttpContext.Current.Request.Files;
```
接下来是保存上传图片的步骤。这里提供了一个示例,展示了如何创建存储路径,并将图片保存到服务器的特定目录。首先,定义完整的存储路径和相对路径:
```csharp
string completeUrl = "";
string relativeUrl = "";
```
然后,可以设定一个基础的保存路径,比如`~/Resources/Pic`,并将其映射到服务器的实际路径:
```csharp
string saveTempPath = "~/Resources/Pic";
string picUploadPath = HttpContext.Current.Server.MapPath(saveTempPath);
```
为了更好地组织存储,我们可以按照年和月创建二级目录结构:
```csharp
completeUrl = @"\\10.0.8.52\YuanXinFiles\Office\"; // 添加根目录
completeUrl += "\\" + DateTime.Now.Year.ToString(); // 添加一级目录(年)
completeUrl += "\\" + DateTime.Now.Month.ToString(); // 添加二级目录(月)
relativeUrl += "\\" + DateTime.Now.Year.ToString();
relativeUrl += "\\" + DateTime.Now.Month.ToString();
// 检查并创建目录
if (!Directory.Exists(completeUrl)) {
Directory.CreateDirectory(completeUrl);
}
```
在创建了目录之后,可以遍历`HttpFileCollection`,将每个文件保存到服务器:
```csharp
foreach (HttpPostedFileBase file in pcFileColl) {
if (file.ContentLength > 0) {
string fileName = Path.GetFileName(file.FileName);
file.SaveAs(Path.Combine(completeUrl, fileName));
// 可以在此处保存文件相对URL到数据库,供后续使用
}
}
```
至于跨域上传,这是在Web开发中常见的需求,主要用于允许来自不同源的请求访问服务器资源。在C#中,可以通过设置ASP.NET MVC或Web API的响应头来允许跨域请求。例如,在控制器的`HttpGet`或`HttpPost`方法中添加以下代码:
```csharp
Response.AppendHeader("Access-Control-Allow-Origin", "*");
Response.AppendHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
Response.AppendHeader("Access-Control-Allow-Headers", "Content-Type");
```
或者,如果你使用的是Web API,可以在Global.asax.cs的`Application_BeginRequest`事件中全局设置:
```csharp
protected void Application_BeginRequest(object sender, EventArgs e) {
if (HttpContext.Current.Request.Headers["Origin"] != null) {
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS") {
HttpContext.Current.Response.End();
}
}
}
```
以上就是C#实现图片上传(PC端和APP)以及跨域上传的基本步骤和注意事项。在实际项目中,你可能还需要处理其他细节,如错误处理、文件类型检查、大小限制等。确保安全性和性能优化也是至关重要的。
2020-10-16 上传
点击了解资源详情
190 浏览量
2023-05-31 上传
2023-09-05 上传
2020-08-29 上传
2020-10-28 上传
weixin_38500222
- 粉丝: 5
- 资源: 913
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍