<!DOCTYPE html>  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								< html  lang = "zh" >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    < head > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        < meta  charset = "utf-8"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        < title > 图片跨域上传示例 - Editor.md examples< / title > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        < link  rel = "stylesheet"  href = "css/style.css"  / > 
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								        < link  rel = "stylesheet"  href = "../css/editormd.css"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        < link  rel = "shortcut icon"  href = "https://pandao.github.io/editor.md/favicon.ico"  type = "image/x-icon"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    < / head > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    < body > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        < div  id = "layout"  style = "height: 2000px;background: #f6f6f6;" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								            < header > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                < h1 > 图片跨域上传示例< / h1 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                < p > Image cross-domain upload example.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								            < / header > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								            < div  id = "test-editormd" > 
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								                < textarea  style = "display:none;" > #### Settings
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								```javascript
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    imageUpload       : true,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    imageFormats      : ["jpg", "jpeg", "gif", "png", "bmp", "webp"],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    imageUploadURL    : "http://xxxxxxx/editor.md/examples/php/cross-domain-upload.php?test=dfdf",
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								    imageUploadFields : "< input type=\"hidden\" name=\"token\" value=\"d3sE3fc87\"/> ", // v1.5.1+
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								    crossDomainUpload : true,
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								    uploadCallbackURL : "http://xxxxxx/upload_callback.html?test=dfdf",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    imageUploadCallback : function (result, dialog) { // v1.5.1+
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        console.log('imageUploadCallback: ', this, result, dialog);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    }
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								#### 跨域上传原理
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								利用 iframe 来实现,A 站 POST 到 B 站,B 站处理上传后再跳转回到 A 站的 callback 页面,callback 页面此时在 iframe 内(即同域下),再通过 window.parent 就可以操作父页面的任意元素了。
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								#### 跨域上传示例 PHP 版
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								当前域名:blog.xxx.com/post.php
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								```html
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								< form method="post" target="upload-iframe" enctype="multipart/form-data" action="http://static.xxx.com/uploader.php?callback=http://blog.xxx.com/upload-callback.html">  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    < input type="file" name="file" accept="image/*" /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    < input type="submit" id="submit" value="开始上传" /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								< /form>  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								< iframe name="upload-iframe" style="display:none;" frameborder="0"> < /iframe>    
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								```     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								图片服务器:static.xxx.com/uploader.php
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								```php
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								< ?php 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								header("Access-Control-Allow-Origin: *"); // Setting allow domian name
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								$file = 'uploads/' . $_FILES['file']['name'];
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								// 详细过程略
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								move_uploaded_file($_FILES['file']['tmp_name'], $file);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								$location = $_GET['callback'].'?success=1&message=xxxxxxx&url=http://static.xxx.com/2015/02/15'.$file.'&temp='.date('ymdhis'); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								header('location:' . $location);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								exit;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								?> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								当前域名:blog.xxx.com/upload-callback.html
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								```html
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								< script type="text/javascript">   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    var query = {};
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    var urlParams = window.location.search.split('?')[1];
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    urlParams = urlParams.split("&"); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    for (var i = 0; i<  urlParams.length; i++) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        var param = urlParams[i].split("="); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        query[param[0]] = param[1]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    var imageDialog = window.parent.document.getElementById(query['dialog_id']);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    //console.log(imageDialog, window.parent.document, window.parent, query);
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    if (query['callback_handler']) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        try {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								            window.parent[query['callback_handler']](query, imageDialog);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        } catch (e) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								            console.error('upload_callback: callback_handler =>', e);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								< /script>  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								```< / textarea > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								            < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        < / div >         
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								        < script  src = "js/jquery.min.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								        < script  src = "../editormd.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        < script  type = "text/javascript" > 
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								            $(function() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                var testEditor = editormd("test-editormd", {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    width             : "90%",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    height            : 640,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    markdown          : "",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    path              : '../lib/',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    imageUpload       : true,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    imageFormats      : ["jpg", "jpeg", "gif", "png", "bmp", "webp"],
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								                    imageUploadURL    : "http://127.0.0.1/editor.md/examples/php/cross-domain-upload.php?test=dfdf",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    imageUploadFields : "< input  type = \"hidden\"  name = \"token\"  value = \"d3sE3fc87\"/ > ", // append upload form fields for CRSF etc. Server-side receives the POST parameters. v1.5.1+
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    crossDomainUpload : true,
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								                    uploadCallbackURL : "http://localhost/editor.md/examples/php/upload_callback.html?test=dfdf",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    imageUploadCallback : function (result, dialog) { // v1.5.1+
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                        console.log('imageUploadCallback: ', this, result, dialog);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                    /*
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								                     跨域时,上传的图片服务器后台只需要返回一个跳转 URL 并跳转到原页面同域下的 callback 页面,结构如下:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     {
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								                        success   : 0 | 1,   // 0 表示上传失败,1 表示上传成功
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								                        message   : "提示的信息,上传成功或上传失败及错误信息等。",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                        dialog_id : $_GET['dialog_id'],
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								                        url       : "远程图片地址"    // 上传成功时才返回
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								            });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    < / body > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								< / html >