尝试上传图片到一个单独的服务器,使用的是KindeEditor 4.1.10

kindeditor上传图片原理是:

上传按钮提交到iframe,生成1个form和1个iframe,form提交到(arget)iframe

iframe的onload方法获取返回的值,然后调用配置回调方法afterUpload/afterError。

第一次尝试

页面A document.domain = "aaa.xx.com";

图片服务器B document.domain = "bbb.xx.com";

在同一个域内xx.xx.com,KindEditor图片能上传,但是没有返回信息。

第二次尝试

直接引用

KindEditor还是能上传图片,却无法返回信息

第三次把KindEditor直接扔到了服务器A,

页面引用

并在当前页面B新建ashx,Upload上传路径为本地的ashx通过webclient通知图片服务器的ashx并返回信息

1.通过uploadJson: ‘/upload_json.ashx?action=News‘,将图片上传到本地ashx,并用webcliet通知图片服务器

HttpPostedFile imgFile = context.Request.Files["imgFile"];//KIndEditor上传的文件

//将imgFile转换成字节形式

byte[] fileByte = new byte[imgFile.InputStream.Length];

imgFile.InputStream.Read(fileByte, 0, fileByte.Length);

//通过WebClient提交文件

//本地地址做测试,端口不同,实现域不同

//图片服务器 http://192.168.0.107:81/

//本地 http://192.168.0.107:80/

string pUrl = string.Format("http://192.168.0.107:81/");

string postUrl = string.Format("{0}kindeditor/asp.net/upload_json.ashx?img={1}&path={2}&action={3}", pUrl, imgFile.FileName, path, action);

System.Net.WebClient webClient = new System.Net.WebClient();

//上传数据

byte[] responseArray = webClient.UploadData(postUrl, "POST", fileByte);

string result = System.Text.Encoding.Default.GetString(responseArray, 0, responseArray.Length);

//对返回的数据进行根据KindEditor的样式进行json解析,需要的是Newtonsoft.dll

hash bk = Newtonsoft.Json.JsonConvert.DeserializeObject(result);

Hashtable hash = new Hashtable();

hash["error"] = 0;

//hash["error"]=bk.error;这样竟然无效

hash["url"] = string.Format("{0}{1}", pUrl, bk.url);

图片服务器接受本地上传的二进制图片数据,并对传送过来的主体进行保存

//获得图片

System.Drawing.Image postImage = System.Drawing.Image.FromStream(context.Request.InputStream);

//保存

System.Drawing.Bitmap bitmap_b = new System.Drawing.Bitmap(postImage);

bitmap_b.Save(filePath);

2.由于项目临时改变,图片和项目放在同一个服务器上,又做了调整

物理路径具体化,比如

SaveURL=@"http://192.168.0.107:81";

SavePath=@"D:\项目\路径";

//String dirPath = context.Server.MapPath(savePath);//相对路径

String dirPath = savePath;//这里改为绝对路径

删除文件的时候

删除的图片是http://192.168.1.1/k/2012/1212.jmg

通过判断是否存在http://头

http://192.168.1.1/k/2012/1212.jpg转换为物理绝对路径"D:\项目/k/2012/1212.jpg

如果是外部引入的文件则返回原地址

if (strPath.ToLower().StartsWith("http://"))

{

if (strPath.IndexOf(ManagerUrl) >= 0)

{

strPath = strPath.Replace(ManagerUrl, ManagerPath);

return strPath;

}

else

{

return strPath;

}

}

}

嗯,自己整理的也很凌乱,暂时记录下,下次慢慢完善。

原文:http://www.cnblogs.com/jsdvkm/p/4528587.html

kindeditor跨域上传文件php,WebClient实现kindeditor跨域上传图片相关推荐

  1. ASP.NET跨服务器上传文件的相关解决方案

    ASP.NET跨服务器上传文件的相关解决方案 参考文章: (1)ASP.NET跨服务器上传文件的相关解决方案 (2)https://www.cnblogs.com/zuowj/p/3999798.ht ...

  2. 跨服务器上传文件方式

    跨服务器上传文件的方式有很多,其中一种是使用在中间服务器上使用临时文件的方式进行保存后再发送到另一个服务器上,实现文件上传. 问题点:中间保存临时文件,还需要不定时的进行文件清理,比较麻烦 直接进行文 ...

  3. 关于nutz跨服务器上传文件

    关于nutz跨服务器上传文件 发布于 578天前  作者 yong9664  770 次浏览  复制  上一个帖子  下一个帖子  标签: 无 是这样的,项目在一台服务器,文件要存储到另外一台服务器. ...

  4. 跨服务器上传文件遇到405 or 409

    跨服务器上传文件405 由于TOMCAT考虑到安全性,默认关闭了TOMCAT的PUT和DELETE请求(即readonly = true). 解决方法:修改Tomcat文件夹下的/conf/web.x ...

  5. php js跨域上传文件,Jquery实现跨域异步上传文件步骤详解

    这次给大家带来Jquery实现跨域异步上传文件步骤详解,Jquery实现跨域异步上传文件的注意事项有哪些,下面就是实战案例,一起来看一下. 先说明白 这个跨域异步上传功能我们借助了Jquery.for ...

  6. 全网最直接简单。百度富文本跨域上传文件到文件服务器

    看了很多文章其实也有很多办法,实现跨域上传.现在讲我目前所用的方法.只实现的多图上传.单图上传失败. 接下来必须认真的看完文章. 当前我用的 版本为UEditor1.4.3. 这里主要是实现重写接收文 ...

  7. SWFUpload上传文件组件,跨域上传文件

    转自: http://zhaowenbinmail.blog.163.com/blog/static/3908086201042743942935/ 解决SWFUpload上传文件组件使用时报告204 ...

  8. tomcat上传文件到不同服务器,使用SpringMVC进行跨服务器上传文件出现的那些坑

    [1] 405 Method Not Allowed 原因是因为Servlet默认是只读的,也就是写不进去(文件上传不过来) 所以要在文件服务器的 web.xml 对 Servlet 进行配置 def ...

  9. mvc api服务器文件上传,springMVC:跨服务器上传文件报409

    上传文件提交后报错如下: HTTP Status 500 – Internal Server Error Type 异常报告 消息 Request processing failed; nested ...

  10. centos用php上传文件,CentOS下Apache的SELinux权限(上传图片后写入指定文件夹)

    今天本来在写一个接口,上传图片,然后保存,数据库中记住路径,这样的一个任务 捣鼓了半天,上传图片代码写好了 - (void)uploadFile { NSString *path = @"/ ...

最新文章

  1. Linux课堂随笔---第四天
  2. 手把手教你生信分析平台搭建
  3. 如何自学python数据分析-Python学习干货 |如何用Python进行数据分析?
  4. 六 运行级别调整增加启动项
  5. cocos2dx的图片载入
  6. matlab的边缘检测方法,常用图像边缘检测方法及Matlab研究
  7. Linux内核笔记--内存管理之用户态进程内存分配
  8. Python制作回合制手游外挂简单教程(下)
  9. React-组件通信
  10. Vue 数组封装和组件data定义为函数一些猜测
  11. DIGITS安装和配置
  12. java链表打印_java链表打印
  13. 双舵轮AGV轨迹跟踪Pure Pursuit算法模型分析、python代码实现
  14. 输出数值类型的算法评价指标
  15. 关于逆序的一些基本操作
  16. Ubuntu(乌班图)修改阿里云镜像源详细步骤及安装gcc编译器
  17. 华为v2服务器系统安装系统,华为服务器RH 2288H v2安装系统
  18. JS封装数组API push,pop,shift,unshift,sort, reverse
  19. JAVA 北京大学GPA计算转换
  20. 别人的面经(算法方向)

热门文章

  1. python网易云音乐爬虫歌词_利用Python网络爬虫抓取网易云音乐歌词
  2. linux压力测试脚本,一种基于shell脚本的CPU压力测试方法与流程
  3. 单点登录Cas如何保证客户端的安全性
  4. Iphone备份SHSH的方法步骤
  5. WPS/Word参考文献格式规范及引用的方法
  6. Laravel框架壁纸图库图片上传下载程序源码
  7. 昆仑通态复制的程序可以用吗_昆仑通态MCGS_G系列触摸屏MQTT数据连接发布
  8. 山西计算机网络系统安装,山西初中信息技术考试系统操作手册-20210410201505.docx-原创力文档...
  9. python 使用 reportlab 生成 pdf
  10. iOS dSYM小结