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

这次给大家带来Jquery实现跨域异步上传文件步骤详解,Jquery实现跨域异步上传文件的注意事项有哪些,下面就是实战案例,一起来看一下。

先说明白

这个跨域异步上传功能我们借助了Jquery.form插件,它在异步表单方面很有成效,而跨域我们会在HTTP响应头上添加access-control-allow-method,当然这个头标记只有IE10,火狐和谷歌上支持,对于IE10以下的浏览器来说,我们就不能用这种方式了,我们需要换个思路去干这事,让服务端去重写向我们的客户端,由客户端(与文件上传页面在同域下)来返回相关数据即可。

再做事

1 Jquery.form的使用

$("#form1").ajaxForm({

beforeSerialize: function () {

var filepath = $("#qdctvfile11").val()

var extStart = filepath.lastIndexOf(".");

var ext = filepath.substring(extStart, filepath.length).toUpperCase();

if (ext != ".PNG" && ext != ".JPG") {

alert("图片仅支持png,jpg格式");

$("#qdctvfile11").val("");

return false;

}

},

success: function (data) {

alert(data);

}

});

function eventStart(obj) {

$("#form1").submit();

}

注意,代码中的eventStart方法是指在选择文件后,自动提交表单,而ajaxForm表示提交表单为异常方式,success回调方法是指异步返回表单地址的返回值。

2 跨域的初步实现

解决域访问,我们可以在服务端的响应头上添加Access-Control-Allow-Origin和Access-Control-Allow-Methods两个特性即可,这些特性在IE10以下的浏览器不被支持,很是郁闷。///

/// MVC模式下跨域访问

///

public class MvcCorsAttribute : ActionFilterAttribute

{

public override void OnActionExecuting(ActionExecutingContext filterContext)

{

Dictionary headers = new Dictionary();

headers.Add("Access-Control-Allow-Origin", "*");

headers.Add("Access-Control-Allow-Methods", "*");

foreach (var item in headers.Keys)

{

filterContext.RequestContext.HttpContext.Response.Headers.Add(item, headers[item]);

}

base.OnActionExecuting(filterContext);

}

}

注意,在生产环境下,我们的Access-Control-Allow-Origin应该是指定合法的域名的,*表示对所以网站都开放访问,这是危险的。

3 解决IE10以下不能跨域的问题

对于IE浏览器确实没法说了,虽然很喜欢微软的东西,但对于IE来说,我只能是NO,我真不想过多的去谈论它,先看看IE实现跨域上传的解决思想:由客户端不直接返回数据,而是重写向到客户端的callback地址,由callback像ajaxForm方法返回最终的数据,这样就解决了直接的跨域问题了。///

/// 第三方的服务端

///

///

///

[HttpPost]

public ActionResult UploadResult()

{

string data = "{'code':'OK','thumpImgUrl':'http://127.0.0.1/images/1.jpg'}";

return Redirect("http://localhost:9497/Home/UploadCallback?data=" + data);

}

///

/// 可能是服务端来调用它

///

///

public ActionResult UploadCallback(string data)

{

return Content(data);

}

有些时候,我们在想一个问题的解决方法时,如果一条路走不通过,可以换换思路,也许会有意外的收获!

有人问,这块使用POST方式在服务端与客户端进行数据传递可以不可以,大叔说:不可以,因为POST在提交到客户端后,客户端处理,然后还是把结果返回给服务端,最后服务端再把结果返回给ajaxform,这还是又回到了开始的跨域问题,哈哈!

5752a534ac7d8bc6235cb610d84bab2b.png

f349d280cccd81c98ce591eccc6ad771.png

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查看php计划任务,php如何实现定时执行计划任务?

我们在之前的文章中给大家介绍了php计划任务的实现原理,相信对此小伙伴们都理解了php计划任务的原理,那么我们今天继续给大家介绍一下php如何实现定时执行计划任务!一、windows计划任务1、写一个PHP程序,命名为test.php&#xff0…

微信小程序实现登录功能php后台,微信小程序实现登录功能的逻辑整理

为了让大家更好的开发微信小程序,本文主要和大家分享微信小程序登录逻辑整理,希望能帮助到大家。注册/登录小程序端" style"margin: 0.8em 0px; padding: 0px; box-sizing: border-box; font-weight: 100; line-height: 1.3em; font-size: 2.1…

php js offset,获取元素的偏移量offset实例详解

问题:如果获取元素距离文档顶部的距离?[javascript] view plain copyvar rect$(#elem)[0].getBoundingClientRect();//获取元素距离文档顶部的距离var toprect.top(window.pageYOffset||document.documentElement.scrollTop)-(document.documentElement.clientTop|…

python文件下载速度 装饰器_python学习笔记之---装饰器

# -*- coding:utf-8 -*-示例1: 最简单的函数,表示调用了两次def myfunc():print ("myfunc() called.")myfunc()myfunc()E:\>py -3 a.pymyfunc() called.myfunc() called.第二步:使用装饰函数在函数执行前和执行后分别附加额外功能示例2: 替换函数(装饰…

php 日期 间隔,PHP实现计算日期间隔天数的方法

这篇文章主要介绍了PHP编程计算日期间隔天数的方法,涉及php日期与时间的转换与运算相关操作技巧,需要的朋友可以参考下刚开始在没有查PHP手册的情况下,用比较老套方法也折腾出来了,代码是这样子实现的:$date_1 date(Y-m-d);$date_2 2012-07-…

Vue02 -- 生命周期

<!DOCTYPE html> <html> <head><title>Vue --- 生命周期</title></head><body><div id"app"><input type"text" name"" v-model"a" placeholder"你的名字"><h1&g…

php 删除上传文件,php实现文件上传、下载和删除的方法

这篇文章主要为大家详细介绍了php文件上传、下载和删除示例,具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下php文件上传、下载和删除示例大体思路如下&#xff0c;具体内容如下一.文件上传1.把上传文件的区域做出来p12.把显示文件的区域做出来p23.提交表单&#…

软件工程详细设计说明书_软件工程导论知识点梳理之简答题

1. 软件危机的表现形式对软件开发成本和进度估计不准确已完成的软件不符合用户需求软件产品质量差&#xff0c;可靠性得不到保证软件产品可维护性差软件成本在计算机总成本中的比例逐渐变大软件开发生产率提高速度比不上计算机应用速度2. 产生软件危机的原因(1)软件是计算机系统…

css中absolute设置问题和如何让div居中

今天设置多个div到页面正中间的时候&#xff0c;在第一层<div class"map">中设置如下&#xff1a; .map{ position&#xff1a;absolute&#xff1b; top:50%; left:50% transform: translate(-50%, -50%); } 该div就移到页面的正中间&#xff0c;达到预定效果…

php模板意思,php中的 是什么意思

php调用类的内部静态成员&#xff0c;或者是类之间调用就要用两个冒号(::)。说明&#xff1a;“::”符号可以认为是与C语言中的“.”相似的&#xff0c;而它更像C中(Perl)的::类范围操作符。示例&#xff1a;{$0;(){//}(){();$;}};/*C语言中的*/a::b::c();//C中的函数$a::b::c;…

程序员为什么老得快_这段 Python 代码让程序员赚 300W,公司已确认!网友:神操作!...

点击上方“Python大本营”&#xff0c;选择“置顶公众号”python大本营 IT人的职业提升平台Python到底还能给人多少惊喜&#xff1f;笔者最近看到了这两天关于Python最热门的话题&#xff0c;关于《地产大佬潘石屹学Python的原因》&#xff0c;结果被这个回答惊到了&#xff1…

Mercedes-Benz won’t start| Step by Step Troubleshooting Guide

Mercedes won’t start or turn over? Are you experiencing Mercedes-Benz no start problems? Key won’t turn at all? Engine turning over but the car will not start? Maybe it finally starts, runs for a few seconds and then dies. These are common Mercedes-…

php如何设置页面布局,excel页面布局怎么调整

excel页面布局调整的方法&#xff1a;首先点击菜单的页面布局&#xff0c;选择纸张大小&#xff1b;然后点击“纸张方向”&#xff0c;单击以选择横向或者纵向&#xff1b;最后点击“页边距”即可。点击菜单——页面布局&#xff0c;工具栏将出现页面布局的许多项目&#xff0c…

无法获取未定义或 null 引用的属性“value”_SpringBoot之Spring@Value属性注入使用详解

在使用Spring框架的项目中&#xff0c;Value是使用比较频繁的注解之一&#xff0c;它的作用是将配置文件中key对应的值赋值给它标注的属性。在日常使用中我们常用的功能都比较简单&#xff0c;本篇文章系统的带大家来了解一下Value的使用方法。Value注入支持形式Value属性注入功…

0x11 栈

【例题】Push,Pop,GetMin 手写一个栈 1 #include <iostream>2 #include <cstdio>3 #include <cmath>4 #include <cstring>5 #include <algorithm>6 #include <queue>7 using namespace std;8 const int maxn1000000;9 int stack[maxn], m[…

java war包合并,使用maven warpath插件合并多module的war包

查看原文&#xff1a;http://www.yeetrack.com/?p899现在java项目一般使用maven、gradle等工具来管理jar包、打包、发布。如果一个项目有很多模块&#xff0c;那般是分成多个module&#xff0c;主目录有个parent&#xff0c;负责包含全部的module&#xff0c;然后目录中多个mo…

儿童编程python入门_儿童编程python入门

经常会有小朋友问我&#xff0c;“我想做个黑客&#xff0c;我该学什么编程语言&#xff1f;”&#xff0c;或者有的小朋友会说&#xff1a;“我要学c&#xff0c;我要做病毒”。其实对于这些小朋友而言他们基本都没有接触过编程语言&#xff0c;只是通过影视或者其他地方看到的…

ARM GNU 常用汇编伪指令介绍

abort.abort: 停止汇编 .align absexpr1, absexpr2: 以某种对齐方式,在未使用的存储区域填充值. 第一个值表示对齐方式,4, 8,16 或 32. 第 二个表达式值表示填充的值. if...else...endif.if .else .endif: 支持条件预编译 include.include "file": 包含指定的头文件,…

java 同类型转换失败,你们见过java类型转换,自己转自己失败的情况吗?很神奇的操作...

问题就是上面这个问题。List slaughterProducts slaughterForm.getSlaughterProductModelForm();for (SlaughterProductModelForm e : slaughterProducts) {....}居然运行到for的时候出现上面这个错误。很神奇吧&#xff0c;工作这么多年了第一次发现 JAVA自己转自己转不成功。…

python可视化代码_python可视化实现代码

python可视化#导入两个库import numpy as npimport matplotlib.pyplot as plt#第一个参数就是x轴的初始值#第二个参数是x轴的终止值#第三个返回num均匀分布的样本&#xff0c;也就是0-12的区间取多少个点&#xff0c;如果为曲线的最好数值大一点x np.linspace(0, 12, 50)y np…