<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                **首先,wangEditor的跨域上傳已經不再支持 IE8、9 瀏覽器。** ---- IE10 及以上瀏覽器在使用跨域上傳時,需要服務器端的配合,對`response`設置以下`head`信息: ```js response.setHeader("Access-Control-Allow-Origin", "http://localhost:8011"); // 第二個參數填寫允許跨域的域名稱,不建議直接寫 "*" response.setHeader("Access-Control-Allow-Headers", "X-Requested-With"); response.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); // 接收跨域的cookie response.setHeader("Access-Control-Allow-Credentials", "true"); ``` **注意,各個后臺語言針對`response`設置`head`信息時,語法可能不同,以上代碼是nodejs的設置方式,其他語言請自行修改。** 如果你以上配置都成功了,并且成功實現了跨域上傳,可在瀏覽器的http請求中看到這些head設置信息,如下圖: ![](https://box.kancloud.cn/2016-03-21_56ef6c54d06f7.png) ---- 以下是一個具體的實例,例如我的前端頁面是`localhost:8011`端口,而我的服務器端的上傳地址是`http://localhost:8012/upload`。 那么我前端頁面中針對編輯器的配置是: ```js var editor = new wangEditor('editor-trigger'); // 跨域上傳 editor.config.uploadImgUrl = 'http://localhost:8012/upload'; // 可以自定義配置 xhr.withCredentials (默認為 true) editor.config.withCredentials = false; // 創建編輯器 editor.create(); ``` 后端代碼示例如下(使用 nodejs 編寫,[點擊這里](https://github.com/wangfupeng1988/wangEditor/blob/master/server-for-cros.js)查看線上源碼): ```js // 以下是實現跨域的服務器端示例代碼: // ------------------------------------------------ // nodejs API 參考:http://nodeapi.ucdok.com/#/api/ // 需要本地安裝 formidable ,參見 https://github.com/felixge/node-formidable var formidable = require('formidable'); var http = require('http'); var fs = require('fs'); var url = require('url'); var path = require('path'); // 文件將要上傳到哪個文件夾下面 var uploadfoldername = 'uploadfiles'; var uploadfolderpath = __dirname + '/' + uploadfoldername; // var server = '192.168.1.2'; var server = 'localhost'; var port = 8012; http.createServer(function (req, res) { var reqMethod = req.method.toLowerCase(); // ----------------------用 '/upload' 這個路由來處理文件上傳---------------------- if (req.url === '/upload' && (reqMethod === 'post' || reqMethod === 'options')) { // 設置允許跨域的域名稱 res.setHeader("Access-Control-Allow-Origin", "http://localhost:8011"); res.setHeader("Access-Control-Allow-Headers", "X-Requested-With"); res.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); // ----- 情況1:跨域時,先發送一個options請求,此處要返回200 ----- if (reqMethod === 'options') { console.log('options 請求時,返回 200'); // 返回結果 res.writeHead(200, { 'Content-type': 'text/html' }); res.end('options OK'); return; } // ----- 情況2:發送post請求,上傳圖片 ----- console.log('定位到 /upload 路由'); // 使用第三方的 formidable 插件初始化一個 form 對象 var form = new formidable.IncomingForm(); // 處理 request form.parse(req, function (err, fields, files) { if (err) { return console.log('formidable, form.parse err'); } console.log('formidable, form.parse ok'); var item; // 計算 files 長度 var length = 0; for (item in files) { length++; } if (length === 0) { console.log('files no data'); return; } for (item in files) { var file = files[item]; // formidable 會將上傳的文件存儲為一個臨時文件,現在獲取這個文件的目錄 var tempfilepath = file.path; // 獲取文件類型 var type = file.type; // 獲取文件名,并根據文件名獲取擴展名 var filename = file.name; var extname = filename.lastIndexOf('.') >= 0 ? filename.slice(filename.lastIndexOf('.') - filename.length) : ''; // 文件名沒有擴展名時候,則從文件類型中取擴展名 if (extname === '' && type.indexOf('/') >= 0) { extname = '.' + type.split('/')[1]; } // 將文件名重新賦值為一個隨機數(避免文件重名) filename = Math.random().toString().slice(2) + extname; // 構建將要存儲的文件的路徑 var filenewpath = uploadfolderpath + '/' + filename; // 將臨時文件保存為正式的文件 fs.rename(tempfilepath, filenewpath, function (err) { // 存儲結果 var result = ''; if (err) { // 發生錯誤 console.log('fs.rename err'); result = 'error|save error'; } else { // 保存成功 console.log('fs.rename done'); // 拼接圖片url地址 result = 'http://' + server + ':' + port + '/' + uploadfoldername + '/' + filename; } // 返回結果 res.writeHead(200, { 'Content-type': 'text/html' }); res.end(result); }); // fs.rename } // for in }); } else { // ---------------------- 其他路由,直接作為靜態文件返回,如通過url獲取圖片 ---------------------- var pathname = url.parse(req.url).pathname; var filepath = path.join(__dirname, pathname); fs.readFile(filepath, function (err, file) { if (err) { res.writeHead(404); console.log('response file error: ' + filepath); res.end('404 NOT FOUND...'); return; } if (filepath.slice(filepath.lastIndexOf('.') - filepath.length) === '.css') { // 兼容IE res.writeHead('200', {'Content-type': 'text/css'}); } else { res.writeHead('200'); } console.log('response file success: ' + filepath); res.end(file); }); } }).listen(port); // 監聽 localhost port 端口 console.log('server start at http://' + server + ':' + port); ``` **注意,**請看源碼中這塊代碼: ```js // ----- 情況1:跨域時,先發送一個options請求,此處要返回200 ----- if (reqMethod === 'options') { console.log('options 請求時,返回 200'); // 返回結果 res.writeHead(200, { 'Content-type': 'text/html' }); res.end('options OK'); return; } ``` 瀏覽器在跨域上傳時,會先發送一個`options`的請求,來驗證瀏覽器是否可以支持跨域,然后再發送一個`post`請求來上傳文件。如果你在使用過程中遇到了類似的問題,可做參考。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看