تحميل صورة ويب Java وتحميل الملف
يعد تحميل الصور وتحميل الملف متماثلين بشكل أساسي ، والصورة نفسها هي أيضًا ملف. تحميل الملف هو تحميل الصور على الخادم. على الرغم من وجود العديد من الطرق ، فإن التنفيذ الأساسي يدور حول قراءة الملفات وكتابةها.
أشياء يجب ملاحظتها
1. يجب أن يكتب النموذج السمة enctype = "multipart/form-data"
2. من أجل التأكد من أنه يمكن تحميل الملف بنجاح ، يجب أن تكون قيمة سمة الاسم لعنصر تحكم الملف متسقة مع اسم متغير طبقة التحكم التي قدمتها.
على سبيل المثال ، إذا كان اسم المساحة عبارة عن ملف ، فأنت بحاجة إلى تحديده في الخلفية
ملف الملف الخاص ؛ // اسم التحكم في الملف
سلسلة خاصة fileContentType ؛ // نوع الصورة
سلسلة خاصة FileFilename ؛ // اسم الملف
1. jsp صفحة
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <! <html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = utf-8"> <meta http-equiv = "pragma" content = "no-cache"/> <base target = "_ self"> abload </tit tit title> head> enctype = "multipart/form-data"> <input type = "file" name = "file" value = "file"> <input type = "subvice" value = "IDENT"> </form> </body> </html>
1. وحدة التحكم التي يجب إرسالها لبيانات الصفحة
package com.cpsec.tang.chemical.action ؛ استيراد java.io.file ؛ استيراد java.io.ioException ؛ استيراد java.util.random ؛ import javax.annotation.resource ؛ import javax.servlet.http.httpservlesterquest ؛ import org.opach.commons.io.files ؛ org.apache.struts2.servletactionContext ؛ استيراد org.springframework.stereotype.controller ؛ استيراد com.cpsec.tang.chemical.biz.lunbobiz LunBooction يمتد Actionupport { / ** * * / private Static Final Long SerialVersionuid = 1L ؛ Resource (name = "lunbobiz") private lunbobiz lunbobiz ؛ صورة الصورة الخاصة ؛ ملف الملف الخاص ؛ // اسم التحكم في الملف السلسلة الخاصة fileContentType ؛ // نوع الصورة السلسلة الخاصة FileFilename ؛ // اسم الملف رقم عدد صحيح خاص ؛ السلسلة العامة FindImage () {Image = lunbobiz.findimage () ؛ العودة النجاح } السلسلة العامة AlterImage () {image = lunbobiz.findimage () ؛ العودة النجاح } سلسلة public alterimage1 () {httpservletrequest request = servleTactionContext.getRequest () ؛ string root = request.getRealPath ("/expload") ؛ // مسار الخادم الذي سيتم تحميل الصورة إليه أسماء السلسلة [] = filefilename.split ("//.") ؛ اسم ملف السلسلة = "" ؛ if (names.length> = 1) {filename = getRandomString (20)+"."+names [names.length-1] ؛ } string picpath = "upload/"+filename ؛ // مسار الصورة المحفوظة إلى ملف ملف قاعدة البيانات 1 = ملف جديد (root) ؛ حاول {fileutils.copyfile (ملف ، ملف جديد (file1 ، filename)) ؛ }} catch (ioException e) {E.PrintStackTrace () ؛ } نجاح العودة ؛ } /*احصل على سلسلة عشوائية* /سلسلة عامة getRandomString (طول int) {// الطول يشير إلى طول سلسلة السلسلة المولدة = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ؛ عشوائي عشوائي = جديد عشوائي () ؛ StringBuffer SB = New StringBuffer () ؛ لـ (int i = 0 ؛ i <length ؛ i ++) {int number = random.nextint (base.length ()) ؛ sb.append (base.charat (number)) ؛ } return sb.toString () ؛ }}هذا هو تحميل الملفات عن طريق النسخ ، وهناك طرق أخرى
الطريقة 2
Controller ("ContractAction") يمتد ContractAction الفئة العامة ActionSupport {Private Final Static String UploadDir = "/Files" ؛ // المسار لتحميل الملف ، قم بإنشاء ملف ملف خاص ضمن WebContent ؛ // يجب أن يكون اسم التحكم في الإدخال هو ملف // تحميل اسم ملف FileName FileFilename ؛ // قم بتحميل مجموعة محتوى الملف سلسلة خاصة FileContentType ؛ اسم الملف الخاص بالسلسلة ؛ refload remoad () السلسلة العامة () يلقي FileNotfoundException ، ioException {String path = uploadFile () ؛ // المسار إلى ملف Save Database Return Success ؛ }. string dir = servleTactionContext.getRequest (). getRealPath (UploadDir) ؛ ملف الملف = ملف جديد (dir) ؛ // يمكنك أيضًا إنشاء دليل تحميل الهدف يدويًا في دليل جذر التطبيق if (! fileLocation.exists ()) {boolean iscreated = fileLocation.mkdir () ؛ إذا فشل (! istcreated) {// فشل إنشاء دليل تحميل الهدف ، يمكن إجراء معالجة أخرى ، مثل رمي استثناء مخصص ، وما إلى ذلك. يجب ألا يحدث هذا الموقف عادة. العودة لاغية. }} // this.setFileFilename (getRandomString (20)) ؛ string [] name = this.getFileFilename (). split ("//.") ؛ اسم ملف السلسلة = getRandomString (20)+"."+name [name.length-1] ؛ this.setFileFilename (اسم الملف) ؛ system.out.println (اسم الملف) ؛ ملف uploadFile = ملف جديد (dir ، filename) ؛ OutputStream Out = fileOutputStream جديد (تحميل) ؛ Byte [] Buffer = New Byte [1024 * 1024] ؛ طول int بينما ((طول = in.read (buffer))> 0) {out.write (buffer ، 0 ، length) ؛ } in.close () ؛ out.close () ؛ إرجاع exploaddir.substring (1)+"//"+fileFilename ؛ } catch (fileNotfoundException ex) {return null ؛ } catch (ioException ex) {return null ؛ }} السلسلة الثابتة العامة getRandomString (طول int) {string str = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789" ؛ عشوائي عشوائي = جديد عشوائي () ؛ StringBuffer SB = New StringBuffer () ؛ لـ (int i = 0 ؛ i <length ؛ i ++) {int number = random.nextint (62) ؛ sb.append (str.charat (number)) ؛ } return sb.toString () ؛ }}بالإضافة إلى تحميل الصورة المفردة ، هناك تحميلات صور متعددة ، والمبادئ هي نفسها
package com.cpsec.tang.chemical.action ؛ استيراد java.io.file ؛ استيراد java.io.fileInputStream ؛ استيراد java.io.filenotfoundException ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstream ؛ استيراد java.io.outputStream ؛ استيراد java.util.list ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد org.apache.struts2 "/رفع"؛ // تحميل ملفات الملفات الخاصة <file> ملف ؛ // تحميل مجموعة اسم الملف قائمة خاصة <Tring> filefilename ؛ // قم بتحميل مجموعة محتوى الملف القائمة الخاصة <String> FileContentType ؛ القائمة العامة <iled> getFile () {file file ؛ } public void setFile (list <ible> file) {this.file = file ؛ } القائمة العامة <string> getFileFilename () {return filefilename ؛ } public void setFileFilename (قائمة <Tring> fileFiLename) {this.fileFiLename = fileFilename ؛ } القائمة العامة <string> getFileContentType () {return fileContentType ؛ } public void setFileContentType (قائمة <string> fileContentType) {this.fileContentType = fileContentType ؛ } السلسلة العامة eploadform () يلقي استثناء {httpservletrequest request = servletactionContext.getRequest () ؛ string webpath = null ؛ // endload path for (int i = 0 ؛ i <file.size () ؛ i ++) {// loop قم بتحميل كل ملف uploadFile (i) ؛ WebPath = "Upload/"+this.getFileFilename (). get (i) ؛ } إرجاع "النجاح" ؛ }. string dir = servleTactionContext.getRequest (). getRealPath (UploadDir) ؛ ملف الملف = ملف جديد (dir) ؛ // هنا يمكنك أيضًا إنشاء دليل تحميل الهدف يدويًا في دليل جذر التطبيق إذا (! إذا كان (! iscreated) {// إذا تم إنشاء دليل تحميل الهدف ، فيمكن إجراء معالجة أخرى ، مثل رمي استثناء مخصص ، وما إلى ذلك. يجب ألا يحدث هذا الموقف. العودة لاغية. }} filename = this.getFileFilename (). get (i) ؛ ملف uploadFile = ملف جديد (dir ، filename) ؛ OutputStream Out = fileOutputStream جديد (تحميل) ؛ Byte [] Buffer = New Byte [1024 * 1024] ؛ طول int بينما ((طول = in.read (buffer))> 0) {out.write (buffer ، 0 ، length) ؛ } in.close () ؛ out.close () ؛ إرجاع exploadfile.toString () ؛ } catch (fileNotfoundException ex) {return null ؛ } catch (ioException ex) {return null ؛ }}}شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!