C#图片上传教程:PC与APP跨域实现
104 浏览量
更新于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
最新资源
- 探索AVL树算法:以Faculdade Senac Porto Alegre实践为例
- 小学语文教学新工具:创新黑板设计解析
- Minecraft服务器管理新插件ServerForms发布
- MATLAB基因网络模型代码实现及开源分享
- 全方位技术项目源码合集:***报名系统
- Phalcon框架实战案例分析
- MATLAB与Python结合实现短期电力负荷预测的DAT300项目解析
- 市场营销教学专用查询装置设计方案
- 随身WiFi高通210 MS8909设备的Root引导文件破解攻略
- 实现服务器端级联:modella与leveldb适配器的应用
- Oracle Linux安装必备依赖包清单与步骤
- Shyer项目:寻找喜欢的聊天伙伴
- MEAN堆栈入门项目: postings-app
- 在线WPS办公功能全接触及应用示例
- 新型带储订盒订书机设计文档
- VB多媒体教学演示系统源代码及技术项目资源大全