파일 업로드 및 다운로드 및 압축 및 프로젝트에 사용 된 이미지를 공유하고 프로젝트에서 직접 추출했습니다 :)
코드 사본은 다음과 같습니다.
패키지 com.eabax.plugin.yundada.utils;
java.awt.image.bufferedimage import;
import java.io.file;
import java.io.ioexception;
import java.text.simpledateformat;
import java.util.date;
Java.util.list 가져 오기;
java.util.uuid import;
import javax.imageio.imageio;
import javax.servlet.http.httpservletrequest;
import net.coobird.thumbnailator.thumbnails;
import org.apache.commons.fileupload.fileitem;
import org.apache.commons.fileupload.disk.diskfileitemfactory;
import org.apache.commons.fileupload.servlet.servletfileupload;
import org.json.jsonobject;
import org.slf4j.logger;
org.slf4j.loggerfactory;
import com.eabax.plugin.yundada.gacontext;
공개 클래스 파일 uploaddownloadUtil {
개인 정적 최종 로거 로그 = loggerFactory.getLogger (FileUploaddownloadUtil.class);
/**
* 서버에 파일을 업로드합니다
* @param 요청
* @param 유형
* @반품
* @throws 예외
*/
공개 정적 문자열 업로드 (httpservletrequest 요청, 문자열 유형) 예외 {
부울 ismultipart = servletfileupload.ismultipartContent (요청);
문자열 savefilename = null;
if (ismultipart) {
String savepath = requestsession (). getServletContext ()
.getRealPath ( "/")
+ "/업로드/";
문자열 temppath = request.getSession (). getServletContext ()
.getRealPath ( "/")
+ "/업로드/온도/";
파일 savefile = 새 파일 (savepath);
파일 tempfile = 새 파일 (temppath);
if (! savefile.isdirectory ())
savefile.mkdirs ();
if (! tempfile.isdirectory ())
tempfile.mkdirs ();
DiskFileItemFactory Factory = 새로운 DiskFileItemFactory ();
Factory.SetSizetHreshold (1024 * 4);
Factory.SetRepository (Tempfile);
ServletFileUpload 업 로더 = 새로운 ServletFileUpload (Factory);
업 로더 .SetSizeMax (20 * 1024 * 1024);
List <fileItem> fileItems = uploader.parserequest (요청);
for (fileItem 항목 : fileItems) {
if (item.isformfield ()) {
// funname = item.getString ();
} 또 다른 {
// String filename = item.getName ();
// 끈
// fix = filename.substring (filename.lastindexof ( ".")+1);
문자열 수정 = 유형;
날짜 nowdate = 새 날짜 ();
simpledateformat sdf = 새로운 simpledateformat (
"yyyymmddhhmmss");
문자열 filename = sdf.format (nowdate);
filename += System.CurrentTimeMillis ();
filename + = "."
SaveFilename = "/upload/" + filename;
파일 = 새 파일 (savepath + filename);
item.write (파일);
}
}
}
SaveFilename을 반환합니다.
}
/**
* 아바타를 업로드하십시오
* @param 요청
* @param 유형
* @반품
* @throws 예외
*/
public static string uploadheadshow (httpservletrequest 요청, gacontext 컨텍스트, 문자열 유형) 예외 {
부울 ismultipart = servletfileupload.ismultipartContent (요청);
문자열 savefilename = null;
문자열 imagePath = "/Upload/Headshow/";
문자열 x = request.getParameter ( "길이");
문자열 y = request.getParameter ( "wide");
if (ismultipart) {
String HeadshowserVicePath = requestsession (). getServletContext ()
.getRealPath ( "/")
+ imagePath;
날짜 nowdate = 새 날짜 ();
simpledateformat sdf = 새로운 simpledateformat (
"yyyymmddhhmmss");
문자열 filename = context.getUername ()+sdf.format (nowdate);
파일 HeadshowFile = 새 파일 (HeadshowservicePath);
if (! headshowfile.isdirectory ())
Headshowfile.mkdirs ();
DiskFileItemFactory Factory = 새로운 DiskFileItemFactory ();
Factory.SetSizetHreshold (1024 * 4);
Factory.SetRepository (헤드 쇼 파일);
ServletFileUpload 업 로더 = 새로운 ServletFileUpload (Factory);
업 로더 .SetSizeMax (20 * 1024 * 1024);
List <fileItem> fileItems = uploader.parserequest (요청);
for (fileItem 항목 : fileItems) {
if (item.isformfield ()) {
// funname = item.getString ();
} 또 다른 {
문자열 수정 = 유형;
filename + = "."
SaveFilename = ImagePath + Filename;
파일 파일 = 새 파일 (HeadshowserVicePath + filename);
item.write (파일);
}
}
// 사진을 압축합니다
if (x! = null &&! "",. Equals (x) && y! = null &&! "
SaveFilename = thumbnailatorimage (ImagePath, filename, type, integer.parseint (x), integer.parseint (y));
}
}
SaveFilename을 반환합니다.
}
/**
* 사진 업로드 및 공유
* @param 요청
* @param 유형
* @반품
* @throws 예외
*/
public static jsonobject uploadArticleImage (httpservletrequest 요청, gacontext 컨텍스트, 문자열 유형) 예외 {
부울 ismultipart = servletfileupload.ismultipartContent (요청);
jsonobject savefilename = new JsonObject ();
문자열 imagePath = "";
문자열 x = request.getParameter ( "길이");
문자열 y = request.getParameter ( "wide");
if ( "4".equals (type)) {
// 업로드 이미지 경로를 공유합니다
ImagePath = "/Upload/ArticleAmage/";
} else if ( "5".equals (type)) {
// 이미지 업로드 링크 이미지 경로
ImagePath = "/Upload/LinkImage/";
} 또 다른 {
// 아바타를 업로드하는 경로
ImagePath = "/Upload/Headshow/";
}
if (ismultipart) {
String HeadshowserVicePath = requestsession (). getServletContext ()
.getRealPath ( "/")
+ imagePath;
파일 HeadshowFile = 새 파일 (HeadshowservicePath);
if (! headshowfile.isdirectory ())
Headshowfile.mkdirs ();
DiskFileItemFactory Factory = 새로운 DiskFileItemFactory ();
Factory.SetSizetHreshold (1024 * 4);
Factory.SetRepository (헤드 쇼 파일);
ServletFileUpload 업 로더 = 새로운 ServletFileUpload (Factory);
업 로더 .SetSizeMax (20 * 1024 * 1024);
List <fileItem> fileItems = uploader.parserequest (요청);
for (fileItem 항목 : fileItems) {
uuid uuid = uuid.randomuuid ();
문자열 filename = uuid.tostring ();
if (item.isformfield ()) {
// funname = item.getString ();
} 또 다른 {
문자열 수정 = 유형;
filename + = "."
savefilename.put (uuid.toString (), imagePath + filename);
파일 파일 = 새 파일 (HeadshowserVicePath + filename);
item.write (파일);
}
// 사진을 압축합니다
if (x! = null &&! "",. Equals (x) && y! = null &&! "
문자열 ThumbnailatorName = 썸네일 테이토리지지 (ImagePath, filename, type, integer.parseint (x), integer.parseint (y));
SaveFilename.put ( "ThumbnailatorImage", ThumbnailatorName);
}
}
}
SaveFilename을 반환합니다.
}
/**
* 압축 업로드 및 사진 저장
* @param oldsavepath 원본 파일 경로
* @param oldfilename 원본 파일 이름
* @param 수정 파일 유형
* @param x 압축에 필요한 너비
* @param y 압축에 필요한 길이
* @반품
* @throws ioexception
*/
public static string whammnailatorimage (String OldSavePath, String OldFilename, String Fix, int X, int y) IoException {
// 썸네일은 그림을 읽고 압축합니다
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 = 새로운 DiskFileItemFactory ();
Factory.SetSizetHreshold (1024 * 4);
Factory.SetRepository (SaveFile);
ServletFileUpload 업 로더 = 새로운 ServletFileUpload (Factory);
업 로더 .SetSizeMax (20 * 1024 * 1024);
uuid uuid = uuid.randomuuid ();
문자열 filename = uuid.tostring ();
filename + = "."
문자열 savefilename = savepath+filename;
file fileoutput = 새 파일 (savefilename);
imageio.write (WaterMarkBufferedImage, Fix, Fileoutput);
SaveFilename을 반환합니다.
}
/**
* 압축을 다운로드하고 사진을 저장하십시오
* @param oldsavepath 원본 파일 경로
* @param oldfilename 원본 파일 이름
* @param 수정 파일 유형
* @param x 압축에 필요한 너비
* @param y 압축에 필요한 길이
* @반품
* @throws ioexception
*/
public static String downloadthumbnailatorimage (String servicepath, String uri, int x, int y) Ioexception {
// 이미지가 존재하는지 확인하십시오
String urisubpath = uri.substring (0, uri.lastindexof ( "/")+1); // 서버 이후 파일 이름 앞에
String filename = uri.substring (uri.lastindexof ( "/")+1, uri.length ()); // 파일 이름
문자열 getThumbNailatorPath = servicePath+UrisubPath+X+"-"+y+"/";
문자열 savefilename = getThumbnailatorPath+filename;
File DownFilePath = 새 파일 (GetThumbNailatorPath); // 압축 후 폴더를 압축합니다.
File DownFile = 새 파일 (SaveFileName); // 파일을 압축합니다
if (downfilepath.isdirectory () && downfile.exists ()) {
SaveFilename을 반환합니다.
} 또 다른 {
// 썸네일은 그림을 읽고 압축합니다
log.error (servicepath+uri);
BufferedImage WaterMarkBufferedImage = Thumbnails.of (ServicePath+URI)
// 썸네일 방법, 사진을 압축하십시오
.Size (X, Y)
// bufferedImage 객체로 읽습니다
.asbufferedImage ();
if (! downfilepath.isdirectory ()) {
downfilepath.mkdirs ();
}
DiskFileItemFactory Factory = 새로운 DiskFileItemFactory ();
Factory.SetSizetHreshold (1024 * 4);
Factory.SetRepository (downfilepath);
ServletFileUpload 업 로더 = 새로운 ServletFileUpload (Factory);
업 로더 .SetSizeMax (20 * 1024 * 1024);
file fileoutput = 새 파일 (savefilename);
imageio.write (WaterMarkBufferedImage, "JPG", 파일 아웃 Put);
}
SaveFilename을 반환합니다.
}
}
위의 내용은이 기사에서 공유되는 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다.