تقدم هذه المدونة باختصار المشكلات التي واجهتها عند تحميل وتنزيل الصور تحت SPRING BOOT. أولاً ، تحتاج إلى إنشاء مشروع تمهيد الربيع.
1. رمز وحدة التحكم الأساسية
حزمة com.qwrt.station.websocket.controller ؛ استيراد com.alibaba.fastjson.jsonobject ؛ استيراد com.qwrt.station.common.util.jsonutil ؛ استيراد org.slf4j.logger ؛ استيراد org.slf4j.loggerfactory ؛ استيراد org.springframework.beans.factory.annotation.value ؛ استيراد org.springframework.web.bind.annotation.requestmapping ؛ استيراد org.springframework.web.bind.annotation.requestmethod ؛ استيراد org.springframework.web.bind.annotation.requestparam ؛ استيراد org.springframework.web.bind.annotation.restController ؛ استيراد org.springframework.web.multipart.multipartfile ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد java.io.*؛ /*** تم إنشاؤه بواسطة Jack في 2017/10/30. */ RestController @REquestMapping ("V1/ UploadDownload") الفئة العامة uploadDowntroller {private static final logger = loggerfactory.getLogger (uploadDownloadController.class) ؛ Value ("$ {eploaddir}") private string eploaddir ؛ requestmapping (value = "/eploadImage" ، method = requestMethod.post) jsonobject public uploadImage (@requestparam (value = "file") multipartfile file) runwittimeexception {if (file.isempty ()) {return jsonutfail.getfailjsonoBject ("الملف لا يمكن أن يكون فارغًا") ؛ } // احصل على اسم ملف اسم الملف = file.getoriginalfilename () ؛ logger.info ("اسم الملف الذي تم تحميله هو:" + اسم الملف) ؛ // احصل على ملف FaceixName = filename.substring (filename.lastindexof (".")) ؛ logger.info ("اسم اللاحقة المحمّلة هو:" + factixname) ؛ // مسار بعد تحميل سلسلة filepath = uploaddir ؛ // حل المشكلات الصينية ، المسار الصيني تحت liunx ، مشكلة عرض الصورة // filename = uuid.randomuuid () + factixname ؛ ملف dest = ملف جديد (FilePath + Filename) ؛ // اكتشف ما إذا كان الدليل موجودًا إذا (! dest.getParentFile (). } جرب {file.transferto (dest) ؛ logger.info ("مسار الملف بعد التحميل ليس:" + filepath + filename) ؛ إرجاع jsonutil.getsuccessjsonoBject (اسم الملف) ؛ } catch (alfortalStateException e) {e.printStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } return jsonutil.getFailJsonObject ("فشل تحميل الملف") ؛ }. logger.debug ("ImageName هو:"+ImageName) ؛ String fileurl = UploadDir+ImageName ؛ إذا كان (fileurl! = null) {// حاليًا ، يتم الحصول على الملف من ملف web-inf // من المشروع (يمكن تكوين هذا الدليل في السطر التالي من التعليمات البرمجية) وتنزيله على c: // users // downloads ، وهو دليل التنزيل الافتراضي للآلة/*string. ملف (RealPath ، اسم الملف) ؛*/ file file = ملف جديد (fileurl) ؛ if (file.exists ()) {response.setContentType ("Application/Force-Download") ؛ // قم بتعيين التنزيل القسري بعدم فتح Response.addHeader ("محتوى disposition" ، "المرفق ؛ filename =" + ImageName) ؛ // قم بتعيين اسم الملف [] Buffer = New Byte [1024] ؛ FileInputStream Fis = NULL ؛ BufferedInputStream BIS = NULL ؛ حاول {fis = new FileInputStream (file) ؛ BIS = جديد bufferedInputStream (FIS) ؛ OutputStream OS = response.getOutputStream () ؛ int i = bis.read (buffer) ؛ بينما (i! = -1) {os.write (buffer ، 0 ، i) ؛ i = bis.read (buffer) ؛ } system.out.println ("النجاح") ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {if (bis! = null) {try {bis.close () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }} if (fis! = null) {try {fis.close () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}}} return null ؛ }}}}هناك طريقتان في الكود أعلاه. الطريقة أعلاه هي طريقة تحميل الصور ، والطريقة التالية هي طريقة تنزيل الصور. لتنزيل الصورة ، تحتاج إلى تمرير اسم ملف الصورة. اختبره على iOS و Android Phone و Google Chrome ولا توجد مشكلة في التحميل والتنزيل.
2. الكود الأساسي لـ HTML المختبر هو كما يلي ، تحميل وتنزيل الصور:
<! doctype html> <html> <head> <meta charset = "utf-8"/> <title> WebSocket chat </title> </head> <body> <iv> <blabe> معلومات الإدخال: </label> <connection </input <"id =" id "/> br/> id = "disconnection"> disconnection </utton> <br /> <br /> <form enctype = "multipart /form-data" id = "uploadform"> <input type = "file" name = "uploadfile" id = "upload_file" style = "margin-bottom: 10px ؛ onClick = "TOPLOADIMAGE ()"> </form> <!-<input type = "file" onChange = "UploadImgTest () ؛" id = "uploadimg" name = "uploadimg"/> <button id = "uploadImage" onClick = "UploadImage () ؛"> upload </utton>-> </viv> <div id = "test"> </div> <hr color = "blanchedalmond"/> <div id = "obcediv"> <img src = "http://192.168.9.123:8860/v1/uploaddownload/downloadImage؟imagename=123.jpg"/> </viv> </body> <script src = "js/jquery-3. Th: src = "{{stomp.min.js}"> </script>-> <script src = "js/sockjs.min.js"> </script> <script> var websocketurl = "ws: //192.168.9.123: 8860/websocketserver" ؛ var WebSocket ؛ if ('WebSocket' in window) {// websocket = new WebSocket ("ws: //" + document.location.host + "/websocketserver") ؛ // WebSocket = WebSocket جديد ("WS: //192.168.9.123: 9092/WebSocketServer") ؛ // WebSocket = WebSocket جديد ("ws: // localhost: 8860/websocketserver") ؛ WebSocket = WebSocket جديد (WebSocketurl) ؛ } آخر إذا ('mozwebsocket' في النافذة) {websocket = new mozwebsocket ("ws: //" + document.location.host + "/websocketserver") ؛ } آخر {websocket = sockjs جديد ("http: //" + document.location.host + "/sockjs/websocketserver") ؛ } websocket.onopen = function (evnt) {console.log ("onopen ----" ، evnt.data) ؛ } ؛ websocket.onmessage = function (evnt) {//$("#test") console.log ("onMessage ----" ، evnt.data) ؛ //$("#test").html(evnt.data) ؛ $ ("#test"). إلحاق ('<viv>' + event.data + '</viv>') ؛ } ؛ websocket.onerror = function (evnt) {console.log ("onerror ----" ، evnt.data) ؛ } websocket.onclose = function (evnt) {console.log ("onClose ----" ، evnt.data) ؛ } $ ('#btn'). on ('click' ، function () {if (WebSocket.ReadyState == WebSocket.open) {var msg = $ ('#id'). val () ؛ // حساب طريقة handletextmessage الخلفية websocket.send (msg) ؛} {تنبيه ("alert (" connection! ") ؛}}) ؛ $ ('#disconnection'). on ('click' ، function () {if (websocket.readyState == WebSocket.open) {websocket.close () ؛ //websocket.onclose () ؛ console.log ("إغلاق اتصال WebSocket بنجاح") ؛}}) ؛ $ ('#connection'). on ('click' ، function () {if (WebSocket.ReadyState == WebSocket.closed) {websocket.open () ؛ //websocket.onclose () ؛ console.log ("افتح اتصال WebSocket بنجاح") ؛}}) ؛ // استمع إلى حدث إغلاق النافذة. عند إغلاق النافذة ، تغلق بشكل نشط اتصال WebSocket لمنع الإغلاق قبل فصل الاتصال ، وسيقوم جانب الخادم بإلقاء استثناءات. window.onbeforeUnload = function () {websocket.close () ؛ } دالة eploadImgTest () {} uploadImage () {// var uploadurl = "http: // localhost: 8860/v1/uploaddownload/uploadimage" ؛ var uploadurl = "http://192.168.9.123:8860/v1/uploaddownload/uploadimage" ؛ var downloadurl = "http://192.168.9.123:8860/v1/uploaddownload/downloadImage" var pic = $ ('#upload_file') [0] .files [0] ؛ var fd = new formData () ؛ //fd.append('uploadfile '، pic) ؛ fd.append ('file' ، pic) ؛ $ .ajax ({url: uploadurl ، type: "post" ، // form data data: fd ، cache: false ، contentType: false ، processData: false ، success: function (data) {console.log ("the paint is: {}" ، data) ؛ = $ (<img /> "img.attr (" SRC "، Downurl+"؟ } </script> </html>بعض الرموز المذكورة أعلاه لا علاقة لها بتحميل الصور وتنزيلها. قم بإزالتها بنفسك حسب الحاجة وانظر إلى الكود الأساسي لتحميل الصور وتنزيلها. تحتاج إلى تقديم jQuery.
3. تكوين خاصية SPRING BOOT:
1. حل مشكلة تحميل الصورة الكبيرة جدًا:
الربيع: http: multipart: max-file-size: 100 mb #file size size max-request-size: 200mbb #maximum size size
هذا هو الإصدار الجديد من Spring Boot لحل مشكلة تحميل كبير جدًا من الصور أو الملفات. هذه ليست الطريقة التي حلها الرئيس. يمكنك التحقق من المعلومات بنفسك
2. الموقع الذي يتم فيه تحميل ملف التكوين وحفظه:
#uploaddir: f:/mystudy/pic/
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.
رفاه مهرجان الفانوس: