مشاركة ملف تحميل وتنزيل وضغط الصورة المستخدمة في المشروع ، واستخراجها مباشرة من المشروع :)
نسخة الكود كما يلي:
حزمة com.eabax.plugin.yundada.utils ؛
استيراد java.awt.image.bufferedImage ؛
استيراد java.io.file ؛
استيراد java.io.ioException ؛
استيراد java.text.simpledateformat ؛
استيراد java.util.date ؛
استيراد java.util.list ؛
استيراد java.util.uuid ؛
استيراد javax.imageio.imageio ؛
استيراد javax.servlet.http.httpservletrequest ؛
استيراد net.coobird.thumbnailator.thumbnails ؛
استيراد org.apache.commons.fileupload.fileItem ؛
استيراد org.apache.commons.fileupload.disk.diskfileItemFactory ؛
استيراد org.apache.commons.fileupload.servlet.servletfileupload ؛
استيراد org.json.jsonobject ؛
استيراد org.slf4j.logger ؛
استيراد org.slf4j.loggerfactory ؛
استيراد com.eabax.plugin.yundada.gacontext ؛
الفئة العامة fileUploadDownloadUtil {
logger static static final log = loggerfactory.getLogger (fileUploadDownloadUtil.class) ؛
/**
* تحميل الملفات على الخادم
* طلب param
* نوع param
* @يعود
* throws استثناء
*/
قم بتحميل السلسلة الثابتة العامة (طلب httpservletrequest ، نوع السلسلة) يلقي استثناء {
Boolean Ismultipart = servletfileupload.ismultipartContent (request) ؛
سلسلة SaveFilename = فارغة ؛
إذا (isMultipart) {
String SavePath = request.getSession (). GetServletContext ()
.getRealPath ("/")
+ "/تحميل/" ؛
String temppath = request.getSession (). getServletContext ()
.getRealPath ("/")
+ "/تحميل/temp/" ؛
ملف SaveFile = ملف جديد (SavePath) ؛
ملف tempfile = ملف جديد (temppath) ؛
if (! savefile.isdirectory ())
SaveFile.mkdirs () ؛
if (! tempfile.isdirectory ())
tempfile.mkdirs () ؛
DiskfileItemFactory Factory = New DiskfileItemFactory () ؛
Factory.SetSizethReshold (1024 * 4) ؛
Factory.SetRepository (tempfile) ؛
servletfileupload تحميل = servletfileupload (المصنع) ؛
تحميل. setsizemax (20 * 1024 * 1024) ؛
قائمة <Ibilitem> fileItems = Uploader.ParsereQuest (request) ؛
لـ (عنصر fileItem: fileItems) {
if (item.isformfield ()) {
// funname = item.getString () ؛
} آخر {
// string filename = item.getName () ؛
// خيط
// fix = filename.substring (filename.lastindexof (".")+1) ؛
إصلاح السلسلة = النوع ؛
DATE NOMDATE = تاريخ جديد () ؛
SimpleDateFormat SDF = جديد simpleatformat (
"Yyyymmddhhmmss") ؛
اسم ملف السلسلة = sdf.format (nowdate) ؛
filename += system.currentTimeMillis () ؛
اسم الملف + = "."
SaveFiLename = "/Upload/" + filename ؛
ملف الملف = ملف جديد (SavePath + Filename) ؛
item.write (ملف) ؛
}
}
}
إرجاع SaveFilename ؛
}
/**
* تحميل الصورة الرمزية
* طلب param
* نوع param
* @يعود
* throws استثناء
*/
reportshow string string static static static (طلب httpservletrequest ، سياق gacontext ، نوع السلسلة) يلقي الاستثناء {
Boolean Ismultipart = servletfileupload.ismultipartContent (request) ؛
سلسلة SaveFilename = فارغة ؛
String ImagePath = "/Upload/HeadShow/" ؛
String x = request.getParameter ("length") ؛
سلسلة y = request.getParameter ("واسعة") ؛
إذا (isMultipart) {
String HeadShowservicePath = request.getSession (). GetServletContext ()
.getRealPath ("/")
+ ImagePath ؛
DATE NOMDATE = تاريخ جديد () ؛
SimpleDateFormat SDF = جديد simpleatformat (
"Yyyymmddhhmmss") ؛
اسم ملف السلسلة = context.getUserName ()+sdf.format (nowdate) ؛
ملف HeadShowFile = ملف جديد (HeadShowServicePath) ؛
إذا (! HeadShowFile.isdirectory ())
headshowfile.mkdirs () ؛
DiskfileItemFactory Factory = New DiskfileItemFactory () ؛
Factory.SetSizethReshold (1024 * 4) ؛
Factory.SetRepository (HeadShowFile) ؛
servletfileupload تحميل = servletfileupload (المصنع) ؛
تحميل. setsizemax (20 * 1024 * 1024) ؛
قائمة <Ibilitem> fileItems = Uploader.ParsereQuest (request) ؛
لـ (عنصر fileItem: fileItems) {
if (item.isformfield ()) {
// funname = item.getString () ؛
} آخر {
إصلاح السلسلة = النوع ؛
اسم الملف + = "."
SaveFilename = ImagePath + Filename ؛
ملف الملف = ملف جديد (HeadShowServicePath + Filename) ؛
item.write (ملف) ؛
}
}
// ضغط الصورة
if (x! = null &&! "" ،.
SaveFilename = thumbnailatorimage (ImagePath ، filename ، type ، integer.parseint (x) ، integer.parseint (y)) ؛
}
}
إرجاع SaveFilename ؛
}
/**
* تحميل ومشاركة الصور
* طلب param
* نوع param
* @يعود
* throws استثناء
*/
jSonObject UploadArticleImage (HttPservletRequest طلب عام ثابت ، سياق gacontext ، نوع السلسلة) يلقي الاستثناء {
Boolean Ismultipart = servletfileupload.ismultipartContent (request) ؛
JSonObject SaveFilename = New JSonObject () ؛
String ImagePath = "" ؛
String x = request.getParameter ("length") ؛
سلسلة y = request.getParameter ("واسعة") ؛
if ("4" .equals (type)) {
// شارك مسار صورة التحميل
ImagePath = "/Upload/articleImage/" ؛
} آخر إذا ("5" .equals (النوع)) {
// ارتباط تحميل مسار الصورة
ImagePath = "/Upload/LinkImage/" ؛
} آخر {
// طريق لتحميل الصورة الرمزية
ImagePath = "/Upload/HeadShow/" ؛
}
إذا (isMultipart) {
String HeadShowservicePath = request.getSession (). GetServletContext ()
.getRealPath ("/")
+ ImagePath ؛
ملف HeadShowFile = ملف جديد (HeadShowServicePath) ؛
إذا (! HeadShowFile.isdirectory ())
headshowfile.mkdirs () ؛
DiskfileItemFactory Factory = New DiskfileItemFactory () ؛
Factory.SetSizethReshold (1024 * 4) ؛
Factory.SetRepository (HeadShowFile) ؛
servletfileupload تحميل = servletfileupload (المصنع) ؛
تحميل. setsizemax (20 * 1024 * 1024) ؛
قائمة <Ibilitem> fileItems = Uploader.ParsereQuest (request) ؛
لـ (عنصر fileItem: fileItems) {
uuid uuid = uuid.randomuuid () ؛
اسم ملف السلسلة = uuid.toString () ؛
if (item.isformfield ()) {
// funname = item.getString () ؛
} آخر {
إصلاح السلسلة = النوع ؛
اسم الملف + = "."
SaveFilename.put (uuid.toString () ، imagepath + filename) ؛
ملف الملف = ملف جديد (HeadShowServicePath + Filename) ؛
item.write (ملف) ؛
}
// ضغط الصورة
if (x! = null &&! "" ،.
سلسلة thumbnailatorname = thumbnailatorimage (ImagePath ، اسم الملف ، النوع ، integer.parseint (x) ، integer.parseint (y)) ؛
SaveFilename.put ("thumbnailatorimage" ، thumbnailatorname) ؛
}
}
}
إرجاع SaveFilename ؛
}
/**
* تحميل الضغط وحفظ الصور
* param oldsavepath مسار الملف الأصلي
* param oldfilename اسم الملف الأصلي
* نوع ملف الإصلاح param
* param x العرض المطلوب للضغط
* param y الطول المطلوب للضغط
* @يعود
* throws ioException
*/
السلسلة الثابتة العامة thumbnailatorimage (String OldsavePath ، String OldFilename ، String Fix ، int x ، int y) يلقي ioException {
// Thumbnail يقرأ ويضغط الصور
BufferedImage WatermarkBufferedImage = thumbnails.of (OldsavePath+Oldfilename)
// طريقة المصغرة ، ضغط الصور
.size (x ، y)
// اقرأ ككائن bufferedimage
.AsbufferedImage () ؛
// اكتب الصور في الذاكرة إلى الملف المحدد
String SavePath = OldSavePath+X+"-"+y+"/" ؛
ملف SaveFile = ملف جديد (SavePath) ؛
if (! savefile.isdirectory ())
SaveFile.mkdirs () ؛
DiskfileItemFactory Factory = New DiskfileItemFactory () ؛
Factory.SetSizethReshold (1024 * 4) ؛
Factory.SetRepository (SaveFile) ؛
servletfileupload تحميل = servletfileupload (المصنع) ؛
تحميل. setsizemax (20 * 1024 * 1024) ؛
uuid uuid = uuid.randomuuid () ؛
اسم ملف السلسلة = uuid.toString () ؛
اسم الملف + = "."
سلسلة SaveFilename = SavePath+Filename ؛
fileOutput = ملف جديد (SaveFilename) ؛
imageio.write (WatermarkBufferedImage ، fix ، fileOutput) ؛
إرجاع SaveFilename ؛
}
/**
* تنزيل مضغوط وحفظ الصور
* param oldsavepath مسار الملف الأصلي
* param oldfilename اسم الملف الأصلي
* نوع ملف الإصلاح param
* param x العرض المطلوب للضغط
* param y الطول المطلوب للضغط
* @يعود
* throws ioException
*/
السلسلة الثابتة العامة downloadThumbnailatorImage (String ServicePath ، String URI ، int x ، int y) يلقي ioException {
// تحقق مما إذا كانت الصورة موجودة
String urisubpath = uri.substring (0 ، uri.lastindexof ("/")+1) ؛ // قبل اسم الملف ، بعد الخادم
اسم ملف السلسلة = uri.substring (uri.lastindexof ("/")+1 ، uri.length ()) ؛ // اسم الملف
String getThumbnailatorPath = ServicePath+UrisubPath+X+"-"+y+"/" ؛
سلسلة SaveFilename = getThumbnailatorPath+اسم الملف ؛
ملف downfilepath = ملف جديد (getThumbnailatorPath) ؛ // ضغط المجلد بعد ضغطه
ملف DownFile = ملف جديد (SaveFilename) ؛ // ضغط الملف بعد ذلك
if (downfilepath.isdirectory () && downfile.exists ()) {
إرجاع SaveFilename ؛
} آخر {
// Thumbnail يقرأ ويضغط الصور
log.error (servicePath+URI) ؛
BufferedImage WatermarkBufferedImage = thumbnails.of (ServicePath+URI)
// طريقة المصغرة ، ضغط الصور
.size (x ، y)
// اقرأ ككائن bufferedimage
.AsbufferedImage () ؛
if (! downfilepath.isdirectory ()) {
downfilepath.mkdirs () ؛
}
DiskfileItemFactory Factory = New DiskfileItemFactory () ؛
Factory.SetSizethReshold (1024 * 4) ؛
Factory.SetRepository (DownFilePath) ؛
servletfileupload تحميل = servletfileupload (المصنع) ؛
تحميل. setsizemax (20 * 1024 * 1024) ؛
fileOutput = ملف جديد (SaveFilename) ؛
imageio.write (WatermarkBufferedImage ، "JPG" ، fileOutput) ؛
}
إرجاع SaveFilename ؛
}
}
ما سبق هو كل المحتوى المشترك في هذه المقالة ، وآمل أن يكون مفيدًا للجميع.