三月份以來,上海疫情成為全國焦點(diǎn)。
根據(jù)上海衛(wèi)健委通報(bào),上海市自2月底始,到4月29日止,本土新冠肺炎確診病例已經(jīng)超過5萬例。而2021年,全國全年新冠肺炎確診病例數(shù)(包含境外輸入)為15243例——在近兩個(gè)月的時(shí)間內(nèi),上海的本土確診病例數(shù)已經(jīng)達(dá)到去年全年的三倍左右。
但是,比這更令人擔(dān)憂的,是高速躍進(jìn)的無癥狀感染者數(shù)量。3月24日后,上海市新增無癥狀感染者規(guī)模已達(dá)到數(shù)千人。在4月4日至4月26日,上海每日新增的無癥狀感染者數(shù)量,曾連續(xù)二十余日達(dá)到萬數(shù)。
上海,我國國際經(jīng)濟(jì)、金融、貿(mào)易、航運(yùn)、科技創(chuàng)新中心,也是世界重要城市之一,眼下正面臨十分復(fù)雜的防疫形勢:傳染性極強(qiáng)的變異株,規(guī)模龐大的社會流動(dòng)人口,都是上海防疫工作的壓力源。
現(xiàn)在,從3月1日報(bào)告新增本土病例以來,上海本輪疫情已經(jīng)超過60天。在60多天里,上海為迎擊奧密克戎做了哪些努力?目前形勢如何?讓我們一起通過數(shù)據(jù)了解一下。
一、上海:全國疫情風(fēng)暴眼
2022年3月1日,上海通報(bào)新增1例本土新冠肺炎確診病例和1例無癥狀感染者,前者為普陀區(qū)一名退休市民,后者則是徐匯區(qū)一個(gè)入境人員隔離點(diǎn)的工作人員。在發(fā)生疫情后,上海市對相關(guān)密切接觸者進(jìn)行了集中隔離觀察。
2022年3月3日,上海市松江區(qū)一永輝超市的2名員工被確診為新冠肺炎病例,3名員工被診斷為無癥狀感染者。根據(jù)上海市衛(wèi)健委通報(bào),上述5人涉及195名密切接觸者,次密接者342人,且均對其進(jìn)行集中隔離觀察。上海三區(qū)三地在三天內(nèi)相繼出現(xiàn)本土病例,上海新一輪疫情由此開始。
在疫情初期,上海市幾乎每天都有不同區(qū)域報(bào)告零星的確診病例,直至3月29日,上海市新增本土確診病例數(shù)字從28日的96擴(kuò)大到326。進(jìn)入四月后,上海市本土確診病例數(shù)量、無癥狀感染者數(shù)量均迅速增加,上海疫情進(jìn)入高速發(fā)展的態(tài)勢。
此次疫情,本土無癥狀感染者總數(shù)和增速都遠(yuǎn)遠(yuǎn)高于本土確診病例。通過整理上海市衛(wèi)健委公開數(shù)據(jù),我們發(fā)現(xiàn),3月31日到4月10日這段時(shí)間里,上海市的無癥狀感染者每日新增數(shù)量從開始的4000余例擴(kuò)大到了25000余例,是上海市無癥狀感染者新增數(shù)量最多的一段時(shí)間。
上海市共有16個(gè)行政區(qū),其中,浦東新區(qū)面積最大、人口最多。從數(shù)量上看,也成為本輪疫情最嚴(yán)重的區(qū)域。浦東新區(qū)在3月10日報(bào)告本區(qū)3月首例本土確診病例,新增本土確診病例數(shù)在3月30日迎來第一個(gè)小高峰。目前,浦東新區(qū)既是本土確診病例數(shù)最多的地區(qū),也是無癥狀感染者累計(jì)數(shù)量最多的地區(qū)。
將上海市新冠肺炎疫情防控工作新聞發(fā)布會上的信息整理發(fā)現(xiàn),此輪疫情初期集中暴發(fā)在三個(gè)重點(diǎn)區(qū)域:普陀區(qū)石泉街道寧強(qiáng)路33號石泉社區(qū)文化活動(dòng)中心、松江區(qū)九里亭街道永輝超市滬亭北路店、上海徐匯區(qū)徐家匯街道漕溪北路1200號(入境人員隔離點(diǎn))。疫情之初,上海市傳播鏈比較清晰,但隨著疫情發(fā)展,上海逐漸從小范圍傳播到廣泛社區(qū)傳播,造成更加復(fù)雜和嚴(yán)峻的疫情防控形勢。
在通報(bào)發(fā)現(xiàn)本土確診病例后,上述三個(gè)地點(diǎn)相繼被劃分為中風(fēng)險(xiǎn)地區(qū)。隨著疫情發(fā)展,前后有25個(gè)地點(diǎn)曾被劃分為中風(fēng)險(xiǎn)地區(qū)。目前,上海市有13個(gè)中風(fēng)險(xiǎn)地區(qū),為全國中風(fēng)險(xiǎn)地區(qū)最多的地方。
另外,上海市在4月11日發(fā)布了“三區(qū)”名單,對上海全市按照封控區(qū)、管控區(qū)和防范區(qū)進(jìn)行差異化管理。在4月20日,上海市劃定了封控區(qū)16650個(gè),涉及1187.8萬人;管控區(qū)13304個(gè),涉及448萬人。截至4月29日,上海市封控區(qū)數(shù)量達(dá)到6393個(gè),管控區(qū)數(shù)量達(dá)到3759個(gè);防范區(qū)域?yàn)?239個(gè)。
二、上海的抗疫難點(diǎn)到底在哪里?
上海本輪疫情,面臨著幾大難點(diǎn)。
首先是奧密克戎亞型變異株BA.2的挑戰(zhàn)。
根據(jù)4月26日上海市疫情防控工作新聞發(fā)布會上的介紹,導(dǎo)致上海本輪本土疫情的新冠病毒,絕大部分為奧密克戎BA.2型和BA.2.2型。這兩種毒株均為奧密克戎毒株的亞型變異株。
奧密克戎毒株的遺傳譜系名稱為B.1.1.529,根據(jù)世界衛(wèi)生組織的報(bào)告,奧密克戎變異株是目前全球流行的主要變異株【1】。在11月26日,世衛(wèi)組織將其列為“需要關(guān)注”的變異毒株(Variant of Concern)。
作為奧密克戎亞型變異株的BA.2,有研究顯示,Omicron BA.2是最具傳染性的變異,其傳染性是Delta 變異的4.2倍;且奧密克戎BA.2在早期難以識別,因此又被非正式地稱為“隱形變種”。
其次是規(guī)模龐大的社會流動(dòng)人口。
上海是一個(gè)超大型的國際化都市,其城區(qū)人口規(guī)模居于我國首位。2019年,根據(jù)聯(lián)合國發(fā)布的《世界城鎮(zhèn)化前景展望》,上海的總?cè)丝谝?guī)模居于全球第三。
除此之外,上海市還擁有發(fā)達(dá)的市內(nèi)交通網(wǎng)絡(luò),也是國內(nèi)乃至國際交通運(yùn)輸網(wǎng)中的重要節(jié)點(diǎn)。根據(jù)《上海市綜合交通發(fā)展“十四五”規(guī)劃》,2019年航空客貨吞吐量達(dá)到1.22億人次、406萬噸,分別位列全球城市第4位、第3位,網(wǎng)絡(luò)通達(dá)性在亞洲處于領(lǐng)先地位。
也正是其作為我國重要交通樞紐的地位,上海市面臨著疫情外溢的風(fēng)險(xiǎn)。根據(jù)人口遷徙大數(shù)據(jù)顯示,上海市遷出人口大多去往江蘇、浙江兩省,全國多個(gè)省市也都報(bào)告了與上海疫情相關(guān)的本土病例。3月10日,在江蘇蘇州,就有多地要求有上海市旅居史(行程卡帶*)人員實(shí)行“3+11”健康管理措施。
自新冠肺炎疫情暴發(fā)以來,上海市一直面臨著境外輸入的防控壓力。在今年的1月至2月,上海市新增的境外輸入病例就已經(jīng)相當(dāng)于2021年全年的80%;截至目前,上海也已經(jīng)成為全國境外輸入確診病例最多的城市。
三、上海防控六十余天,哪些問題最受關(guān)注?
三月以來的六十多天里,上海市每日召開新冠肺炎疫情防控工作新聞發(fā)布會。在六十場發(fā)布會上媒體的提問中,我們看到了這段時(shí)間,上海市疫情防控措施中最為突出的幾個(gè)關(guān)鍵詞:物資、醫(yī)療。
首先,是封控期內(nèi)物資供應(yīng)的問題。
上海市是一個(gè)高度依賴外埠市場供應(yīng)蔬菜的城市。2013年,上海市蔬菜的自給率在55%左右;到2019年,上海市地產(chǎn)蔬菜對蔬菜總消費(fèi)量的占比下降到44%。對此輪疫情暴發(fā)的三、四月份,根據(jù)2013年的調(diào)查,正是上海市全年外埠蔬菜上市的第一個(gè)小高峰。
根據(jù)2013年和2019年的調(diào)查,上海市蔬菜主要來源于江蘇和山東等地。因疫情防控,截至4月10日,江蘇關(guān)閉了129個(gè)高速收費(fèi)站,數(shù)量在全國僅次于遼寧。上海也對外地貨車出入進(jìn)行嚴(yán)格的車證管理,非保供企業(yè)幾乎無法進(jìn)出上海。
4月14日,國務(wù)院聯(lián)防聯(lián)控機(jī)制綜合組交通管控與運(yùn)輸保障專班發(fā)布了全國統(tǒng)一樣式的《重點(diǎn)物資運(yùn)輸車輛通行證》(以下簡稱《通行證》),上海市商務(wù)委員會也在23日下發(fā)通知,為上海市商貿(mào)物資和生活物資企業(yè)辦理《通行證》。另外,上海市也在加大鐵路、水運(yùn)通道的運(yùn)輸量,以確保物資供應(yīng)。
但是,根據(jù)4月6日在新聞發(fā)布會上的信息,上海市由于終端運(yùn)力不足,導(dǎo)致生活物資配送并不及時(shí)。
因?yàn)榉饪兀虾T趰忩T手?jǐn)?shù)量急劇減少。根據(jù)上海市4月19日舉行的疫情防控工作新聞發(fā)布會上的介紹,上海市當(dāng)時(shí)在崗騎手為2萬人左右;而此前,在2019年的媒體報(bào)道中,上海僅浦東地區(qū)登記騎手總?cè)藬?shù)就超過了1.8萬人。
針對這個(gè)問題,上海市已經(jīng)采取大數(shù)據(jù)中心提供的技術(shù)平臺,制定電商平臺、快遞公司“企業(yè)白名單”和配送寄遞“人員白名單”,并為其制發(fā)“電子通行證”,在“電子通行證”內(nèi)展示48小時(shí)核酸檢測陰性證明和“健康碼”綠碼等信息,作為配送寄遞人員上崗的必要條件和通行憑證,以增強(qiáng)市內(nèi)運(yùn)力。
另外,是上海的防疫醫(yī)療資源承載問題。
據(jù)上海市新冠肺炎疫情防控工作發(fā)布會上的信息,依據(jù)國家最新公布的《新型冠狀病毒肺炎診療方案(試行第九版)》,新冠肺炎輕型病例實(shí)行集中隔離管理,隔離場所不限于醫(yī)療機(jī)構(gòu),如病情加重,將轉(zhuǎn)至定點(diǎn)醫(yī)院治療。上海根據(jù)防疫要求建造的若干方艙醫(yī)院,則是符合標(biāo)準(zhǔn)要求的集中隔離救治場所,有醫(yī)務(wù)人員進(jìn)駐,主要用于對輕癥、無癥狀感染者的集中隔離觀察或適當(dāng)?shù)膶ΠY治療。
國務(wù)院聯(lián)防聯(lián)控機(jī)制赴上海工作組成員、國家衛(wèi)生健康委醫(yī)管中心信息數(shù)據(jù)管理與醫(yī)療機(jī)構(gòu)運(yùn)行管理處處長向準(zhǔn)4月16日接受新華社采訪時(shí)透露,截至4月13日24時(shí),上海已有方艙醫(yī)院床位約20.4萬張,在建的方艙醫(yī)院計(jì)劃近期開放床位3.5萬張,合計(jì)約24萬張。而截至4月27日,上海市本土陽性感染者已經(jīng)達(dá)到53萬余人。
目前,上海正通過加快方艙醫(yī)院的建設(shè),提升現(xiàn)有方艙醫(yī)院的流轉(zhuǎn)效率等方式,盡力實(shí)現(xiàn)“四應(yīng)四盡”、日清日結(jié)。全國各省也在不斷向上海輸送援滬醫(yī)療隊(duì),盡可能增加上海市的醫(yī)療承載能力。
目前,上海市已經(jīng)連續(xù)三日(4月27日、28日、29日)新增無癥狀感染者數(shù)量都已經(jīng)下降到千位;本輪疫情中,上海市累計(jì)治愈出院人數(shù)也已經(jīng)接近3萬人。疫情防控形勢有了好轉(zhuǎn)的態(tài)勢。
凱特·阿歇爾曾在《紐約:一座超級城市是如何運(yùn)轉(zhuǎn)的》中說:“任何一個(gè)大都市的居民,都很少停下來思考城市生活的復(fù)雜性,或者是那些日日夜夜使城市維持正常運(yùn)轉(zhuǎn)的系統(tǒng)有多復(fù)雜。”對于紐約是如此,對于上海來說亦是如此。復(fù)雜的城市系統(tǒng),決定了上海復(fù)雜的防疫情勢。但是,每一個(gè)人,每一片社區(qū),每一個(gè)還在運(yùn)轉(zhuǎn)的機(jī)構(gòu),都還在奮力爭取勝利的曙光。我們共同期待那一天。
【1】原文:“The Omicron variant remains the dominant variant circulating globally,accounting for nearly all sequences recently reported to GISAID”,COVID-19 Weekly Epidemiological Update,Edition 86,published 5,April 2022
【2】吳俁,劉民. 不同新型冠狀病毒變異株感染的COVID-19潛伏期研究[J].2022年
【3】周燕,奧巖松.上海市場外埠蔬菜消費(fèi)現(xiàn)狀及其特點(diǎn)研究[J].2013
【5】孫占剛;楊娟;彭飚;馬驁;柴立平,上海蔬菜市場狀況與市場開拓建議[J],2020年
【6】李干瓊;王盛威;許世衛(wèi);趙京音;馬佳.大城市蔬菜供需分析與預(yù)測研究——以上海市為例[J].2021
【7】解有成;康殷楠;高春;劉珊山;鄭立婷;于曉輝;張久聰.新冠病毒“奧密克戎亞型變異...株BA.2”的最新研究進(jìn)展[J].2022年
【8】陳姍姍,馬晨晨,胥會云.上海外防輸入壓力到底有多大?數(shù)據(jù)告訴你真相.第一財(cái)經(jīng).https://www.yicai.com/news/101350912.html.
【9】張倩,白廷俊,周力.上海本輪疫情累計(jì)報(bào)告535600例新冠本土陽性感染者.央視網(wǎng).https://content-static.cctvnews.cctv.com/snow-book/index.html?item_id=1968372601727033723&t=1651025113096&toc_style_id=feeds_default&share_to=wechat&track_id=f6495ffc-4562-4999-90df-0f286fbd43af.
【10】包志明.封面報(bào)道之二|上海:精準(zhǔn)防控的失控.財(cái)新網(wǎng).https://weekly.caixin.com/2022-04-02/101864942.html
數(shù)據(jù)新聞編輯:趙林
新媒體設(shè)計(jì):許驍勇
動(dòng)效設(shè)計(jì):李亞珍
校對:李立軍
之前閑時(shí),花了幾個(gè)下班時(shí)間使用VUE+Spring Boot前后端分離做了一個(gè)博客,博客文章編輯采用vue-quill-editor插件,做了一些簡單的配置后,就直接可用了,可惜在編輯文章時(shí),默認(rèn)的圖片上傳為Base64存放在文章內(nèi)容中,這使得原本存儲在數(shù)據(jù)庫中的5這個(gè)大字段會因一篇文章的圖片上傳多而變得沉重。因?yàn)槲沂沟玫氖窃品?wù)當(dāng)服務(wù)器,有用過云服務(wù)的都知道,網(wǎng)絡(luò)帶寬很貴。在帶寬只有3M的情況下,讀取一篇幾兆的文章會有幾秒的延遲。一開始我以為是數(shù)據(jù)庫讀取問題,所以我把文章內(nèi)容這個(gè)字段做了中間緩存,把常變字段(如閱讀數(shù))依然從數(shù)據(jù)庫中讀取,在邏輯上進(jìn)行兩者拼接返回給前端,但依然速度很慢。如下圖,文章內(nèi)容中的圖片是BASE64存儲,存儲大小782KB,如果一篇文章的上傳圖片越多,也就會導(dǎo)致這個(gè)文章內(nèi)容字段越大。
在不考慮提高帶寬成本的情況下,準(zhǔn)備把富文本圖片默認(rèn)存儲為Base64的方案改成圖片存儲服務(wù)器,用URL引用,這樣可以減少文章內(nèi)容的讀寫IO。以下我將從引用富本文到圖片改造再到后端接收上傳的圖片來介紹。
一、下載富文本依賴
npm install vue-quill-editor --save
下載完依賴后,在package.json中,將可以找到對應(yīng)的版本。
二、在main.js中引用富文本,可以按Ctrl鍵+鼠標(biāo)點(diǎn)擊vue-quill-editor,看下是否可以看到源碼,這樣可以再次確認(rèn)是否下載成功(我用的編譯器是JetBrains WebStorm 2018.3.5 x64)
import VueQuillEditor from 'vue-quill-editor'
三、富文本的使用
1、HTML部分代碼
<template> //中間省去其他內(nèi)容,只顯示富文本HTML <div class="edit_container"> <quill-editor v-model="blogsContent" ref="myQuillEditor" :options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)" @change="onEditorChange($event)"> </quill-editor> </div> </template>
2、JS部分代碼
<script> import {quillEditor} from "vue-quill-editor"; //調(diào)用編輯器 import quillConfig from '../../api/quill-config.js'//重寫富文本,使得圖片走自定義上傳 import 'quill/dist/quill.core.css'; import 'quill/dist/quill.snow.css'; import 'quill/dist/quill.bubble.css'; export default { name: 'editor', components: { quillEditor }, data() { return { editorOption: quillConfig,//重寫 } } }
3、重寫自定義圖片上傳quill-config.js代碼
以下代碼可以直接復(fù)制,然后改一下接口地址和你所要的參數(shù)即可
/*富文本編輯圖片上傳配置*/ const uploadConfig={ // 必填參數(shù) 圖片上傳地址 action: '/api/file/up/img', // 必填參數(shù) 圖片上傳接口地址 methods: 'POST', // 必填參數(shù) 圖片上傳方式 token: '', // 可選參數(shù) 如果需要token驗(yàn)證,假設(shè)你的token有存放在sessionStorage name: 'img', // 必填參數(shù) 文件的參數(shù)名 size: 500, // 可選參數(shù) 圖片大小,單位為Kb, 1M=1024Kb accept: 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon' // 可選 可上傳的圖片格式 }; // toolbar工具欄的工具選項(xiàng)(默認(rèn)展示全部) const toolOptions=[ ['bold', 'italic', 'underline', 'strike'], ['blockquote', 'code-block'], [{'header': 1}, {'header': 2}], [{'list': 'ordered'}, {'list': 'bullet'}], [{'script': 'sub'}, {'script': 'super'}], [{'indent': '-1'}, {'indent': '+1'}], [{'direction': 'rtl'}], [{'size': ['small', false, 'large', 'huge']}], [{'header': [1, 2, 3, 4, 5, 6, false]}], [{'color': []}, {'background': []}], [{'font': []}], [{'align': []}], ['clean'], ['link', 'image', 'video'] ]; const handlers={ image: function image() { var self=this; var fileInput=this.container.querySelector('input.ql-image[type=file]'); if (fileInput===null) { fileInput=document.createElement('input'); fileInput.setAttribute('type', 'file'); // 設(shè)置圖片參數(shù)名 if (uploadConfig.name) { fileInput.setAttribute('name', uploadConfig.name); } // 可設(shè)置上傳圖片的格式 fileInput.setAttribute('accept', uploadConfig.accept); fileInput.classList.add('ql-image'); // 監(jiān)聽選擇文件 fileInput.addEventListener('change', function () { // 創(chuàng)建formData,append這個(gè)方法是添加參數(shù)的方法,如果你的接口需要添加其他參數(shù),比如用戶ID,也可以在后面加進(jìn)去。 var formData=new FormData(); formData.append(uploadConfig.name, fileInput.files[0]); formData.append('object','product'); // 如果需要token且存在token if (uploadConfig.token) { formData.append('token', uploadConfig.token) } // 圖片上傳 var xhr=new XMLHttpRequest(); xhr.open(uploadConfig.methods, uploadConfig.action, true); // 上傳數(shù)據(jù)成功,會觸發(fā) xhr.onload=function (e) { if (xhr.status===200) { // var res=JSON.parse(xhr.responseText);//如果你圖片上傳接口返回的是一個(gè)Json對象,就需要這個(gè)轉(zhuǎn),然后在下面獲取圖片URL let length=self.quill.getSelection(true).index; //這里很重要,你圖片上傳成功后,img的src需要在這里添加,res.path就是你服務(wù)器返回的圖片鏈接。 //如果只是圖片地址,在前端是顯示不了的,需要添加前綴,你可以使用接口全路徑,也可以使用我下面的VUE路由解決跨域問題 self.quill.insertEmbed(length, 'image','/api/file/get/img?url='+xhr.responseText); self.quill.setSelection(length + 1) } fileInput.value='' }; // 開始上傳數(shù)據(jù) xhr.upload.onloadstart=function (e) { fileInput.value='' }; // 當(dāng)發(fā)生網(wǎng)絡(luò)異常的時(shí)候會觸發(fā),如果上傳數(shù)據(jù)的過程還未結(jié)束 xhr.upload.onerror=function (e) { }; // 上傳數(shù)據(jù)完成(成功或者失敗)時(shí)會觸發(fā) xhr.upload.onloadend=function (e) { // console.log('上傳結(jié)束') }; xhr.send(formData) }); this.container.appendChild(fileInput); } fileInput.click(); } }; export default { placeholder: '', theme: 'snow', // 主題 modules: { toolbar: { container: toolOptions, // 工具欄選項(xiàng) handlers: handlers // 事件重寫 } } };
4、JAVA圖片上傳接口
@PostMapping("/up/img") @ApiOperation(value="上傳") public String upImg(HttpServletRequest request, @ApiParam(name="userId", value="id") String userId, MultipartFile img){ String fileName=ServiceCommon.ymdhmsdfStr.format(new Date())+"_"+img.getOriginalFilename();//防止圖片重名覆蓋,生成一個(gè)當(dāng)前時(shí)間+圖片名 String path=filePath;//配置文件中的圖片存儲前綴,如d://img/ String nameTypePath="/" +userId+ "/blog_img" ;//中間路徑 return upFileImgService.upFileService("/" + fileName, path + nameTypePath, nameTypePath, img);//接口看后面Service層 }
4.1、Service層
public Result upFileService(String fileName, String filePath, String nameTypePath, MultipartFile file) { try { File file1=new File(filePath);//按路徑生成文件對象 if(!file1.exists()){//如果文件不存在,將創(chuàng)建一個(gè)文件 file1.mkdirs(); } byte [] bytes=file.getBytes();//獲取文件二進(jìn)制字節(jié)數(shù)組 String url=filePath+fileName;//存儲路徑+文件名,產(chǎn)生一個(gè)文件存儲地址 Path path=Paths.get(url); Files.write(path,bytes);//文件寫入 return nameTypePath+fileName;//返回URL(我這個(gè)URL返回的前綴地址是截取掉的,不會顯示IP等信息,只返回給前端后半地址,前端在調(diào)用圖片獲取時(shí),將在接口中帶入前綴,防止全路徑暴露給前端) } catch (IOException e) { e.printStackTrace(); return ""; } }
5、圖片獲取接口
@GetMapping("/get/img") @ApiOperation(value="獲取圖片") public void getImg(HttpServletResponse response, @ApiParam(name="url", value="文件路徑") @RequestParam(required=true) String url, @ApiParam(name="resType", value="文件以什么類型輸出(pdf,jpg)") @RequestParam(required=false) String resType) { String path=filePath + url; upFileImgService.download(path, response, "get", resType); }
5.1、圖片獲取接口Service層
public void download(String filePath, HttpServletResponse response,String type,String resType) { File file=new File(filePath); response.setContentLength((int)file.length()); try ( FileInputStream fis=new FileInputStream(file); OutputStream os=response.getOutputStream()) { byte[] buf=new byte[1024 * 256]; int i; while ((i=fis.read(buf)) !=-1) { os.write(buf, 0, i); } os.flush(); } catch (IOException e) { System.out.println(e.getMessage()); } }
到此VUE富文本編輯器+Spring Boot接口就完成了。代碼基本復(fù)制改改就可以使用。最后看下效果如何,如下圖上,從原來的Base64內(nèi)容變成URL地址,整個(gè)文章字段就縮小幾十倍,這在IO讀取時(shí)也加快了幾十倍。
點(diǎn)擊鏈接查看圖片:https://content-static.cctvnews.cctv.com/snow-book/index.html?item_id=2051731297093853307&toc_style_id=feeds_default&share_to=wechat&track_id=aa32c371-8b5b-4005-8805-82347702c060
近日,在吉林琿春城郊一處綠化帶里,攝影師拍到了可愛的“藍(lán)精靈”。“藍(lán)精靈”特別喜歡照相機(jī)的鏡頭,對照相機(jī)上看、下看、左看、右看,并且把照相機(jī)當(dāng)作舞臺,表演各種“絕活”。
幽默的攝影師用另一個(gè)照相機(jī)抓拍了一組《“藍(lán)大膽”要入鏡》的畫面。“藍(lán)大膽”就是普通?(shi),為?科?屬的鳥類,俗名藍(lán)大膽、穿樹皮、松枝兒、貼樹皮。多生活于山中的針葉林、闊葉林、針闊混交林。
“藍(lán)大膽”可以在樹干的裂縫中覓食昆蟲,因而能消滅許多其它森林鳥類吃不到的害蟲;它也能到地面上啄食各種鱗翅目的幼蟲及其蛹;也取食一部分益蟲,例如蜜蜂、食蚜虻、瓢蟲等。秋、冬季節(jié),“藍(lán)大膽”以植物種子、葉片、果實(shí)為食,包括橡實(shí)、松、杉、椴、樺等,冬季有時(shí)也到居民點(diǎn)取食禽畜的飼料。
監(jiān)制 | 裴奔 張英林 周軍
主編 | 張旭成
統(tǒng)籌 | 梁洋
合作 | 琿春市融媒體中心
圖片 | 高飛
來源:中央廣播電視總臺吉林總站
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。