博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跨域文件上传解决方案
阅读量:6271 次
发布时间:2019-06-22

本文共 1586 字,大约阅读时间需要 5 分钟。

文件上传在项目中是必不可少的一个环节。一般而言,只要有一个上传页面就可以了  图片直接上传到网站下面。

但是当项目较多,或者项目太大 有好多需要上传文件的需求时,一个通用的文件上传组件就很有必要了。

而且我需要的是文件上传之后是在单独的服务器上(外在体现就是网站与图片不是同一个域名)

这样文件上传页面与当前网站就需要跨域进行上传操作了。

上传过程没有问题,但是上传结束之后的回调操作因为不能跨域存取值而无法进行。

 

通过对网上一些文章的整理,方案如下

 

调用文件上传组件的页面(url=http://localhost:2565/.....)

    

 form的target要指定一个隐藏的iframe,这样当前页面才不会因为上传图片而刷新。

实际上就相当于在隐藏的iframe中打开action指定的链接并把form中的数据post过去

至于action的链接中有个参数cb,这个cb的链接在整个操作中至关重要:它是上传结束后回调操作的第一步。

 

上传文件的后台代码(http://localhost:13124/Upload/FileHandler.ashx)

private const int MAX_UPLOAD_SIZE = 2;/// /// 上传文件/// fileSelector是前台代码中文件控件的name /// /// 
public string UploadFile(HttpRequest req ,HttpResponse res){ if (req.Files["fileSelector"].ContentLength > MAX_UPLOAD_SIZE * 1024 * 1024) { return String.Format("请上传{0}M以内的文件。", MAX_UPLOAD_SIZE); } string uploadFileName = req.Files["fileSelector"].FileName; string path = HttpContext.Current.Server.MapPath(uploadFileName); req.Files["fileSelector"].SaveAs(path); return "";} /// /// 上传结束后要重定向到指定链接/// /// public void ProcessRequest(HttpContext context){ string result = UploadFile(context.Request, context.Response); if (String.IsNullOrEmpty(result)) { result = "上传成功"; } string cbSrc = context.Request["CB"]; context.Response.Redirect(cbSrc);}

 

 

注意:cb指定的上传结束后的链接与调用上传组件的页面是同源的。

cb指定的页面(http://localhost:2565/fileUploadCB.htm)

    

 

 该页面只是起到一个中转的作用,用于上传结束之后将结果提供给主页面,并执行回调函数。


 

上面给出的只是基本方案。具体的话  还有很多事情要做,上传时传的参数还是要研究一下的  因为这决定了文件的分类,用户归属等。

大部分工作也没必要自己写,有很多成熟的上传插件

转载于:https://www.cnblogs.com/TiestoRay/p/4046383.html

你可能感兴趣的文章
角色权限分配
查看>>
明小子动力上传拿webshell.zip
查看>>
ES6 Module export与import复合使用
查看>>
第三篇、image 设置圆角的几种方式
查看>>
关于Vs2010 C#使用DirectX的问题
查看>>
EPP(Eclipse PHP)语法高亮仿EditPlus配置
查看>>
OA账号架构权限的问题
查看>>
030——VUE中鼠标语义修饰符
查看>>
python编辑csv
查看>>
sql游标的使用与exec的两种用法
查看>>
数据结构
查看>>
78/90 Subsets --back tracking
查看>>
非托管资源的释放
查看>>
开篇寄语
查看>>
Dijkstra算法的C++实现
查看>>
phpstorm psr2样式.xml
查看>>
js 无限级分类
查看>>
umask值与Linux中文件和目录权限的关系
查看>>
python自动化开发-8
查看>>
bzoj 2127: happiness
查看>>