前段时间因为项目需求,要实现图片的跨域上传,研究了一番后实现了这个功能,这里做个记录方便日后遇到同样的问题,也给后来者做个参考。
目前为止我了解到的文件异步上传的方式有以下几种
- flash控件 (IOS已经不支持flash了)
- HTML5 FormData
- iframe形式
当然我们还可以通过使用一些第三方的插件来实现跨域上传比如jQuery的ajaxFileUpload,不过好像也是通过构建iframe来实现异步上传的。通过form的target属性将返回结果显示在一个隐藏的iframe来实现类似ajax的效果,而且form表单的提交是可以跨域的。
以下是文件上传的html:
<!DOCTYPE html>
<html>
<head>
<title>Html5 postMessage+iframe跨域上传文件</title>
<meta charset='UTF-8'>
<link rel="stylesheet" href="style.css"/>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.js"></script>
</head>
<body>
<form class="form w_12" action="" method="post" enctype="multipart/form-data" target="uploadimg_