Java實(shí)現(xiàn)圖片上傳至服務(wù)器功能(FTP協(xié)議)
本文為大家分享了java實(shí)現(xiàn)圖片上傳至服務(wù)器功能的具體代碼,供大家參考,具體內(nèi)容如下
本案例實(shí)現(xiàn)圖片上傳功能分為兩個步驟,分別為
(1)APP用base64加密將圖片內(nèi)容上傳至服務(wù)器(http協(xié)議),在臨時目錄中先存儲好圖片;
(2)將服務(wù)器臨時存儲的圖片用FTP協(xié)議上傳至另一臺專門用做存儲圖片的服務(wù)器;
/**
* ftp 文件操作服務(wù)實(shí)現(xiàn)類
*
*/
@Service
public class FtpFileServiceImpl implements IFtpFileService {
/**ftp 服務(wù)器*/
@Value("${PTFSERVER}")
private String server;
/**Ftp 用戶名*/
@Value("${PTFUSERNAME}")
private String uname;
/**ftp 密碼*/
@Value("${PTFPWD}")
private String pwd;
/**本地字符集編碼*/
private static final String LOCAL_CHARSET = "GBK";
/**ftp 服務(wù)器字符集編碼*/
private static final String SERVER_CHARSET = "ISO-8859-1";
/**
* ftp 文件上傳
*/
@Override
public void ftpUpload(File srcFile, String fileName, String foldName) {
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;
String charset = LOCAL_CHARSET;
try {
ftpClient.connect(server);
ftpClient.login(uname, pwd);
fis = new FileInputStream(srcFile);
// 設(shè)置上傳目錄
ftpClient.changeWorkingDirectory(foldName);
ftpClient.setBufferSize(1024);
ftpClient.enterLocalPassiveMode();
if (FTPReply.isPositiveCompletion(ftpClient.sendCommand("OPTS UTF8", "ON"))) {
// 開啟服務(wù)器對UTF-8的支持,如果服務(wù)器支持就用UTF-8編碼,否則就使用本地編碼(GBK).
charset = "UTF-8";
}
ftpClient.setControlEncoding(charset);
fileName = new String(fileName.getBytes(charset),SERVER_CHARSET);
// 設(shè)置文件類型(二進(jìn)制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
} catch (IOException e) {
throw new EhospitalServiceException(ResponseCode.RESPONSE_COMMON_ERROR_CODE, "FTP客戶端出錯!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new EhospitalServiceException(ResponseCode.RESPONSE_COMMON_ERROR_CODE, "關(guān)閉FTP連接發(fā)生異常!", e);
}
}
}以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Java的Graphics類進(jìn)行繪圖的方法詳解
這篇文章主要介紹了使用Java的Graphics類進(jìn)行繪圖的方法,是Java的GUI編程的基礎(chǔ),需要的朋友可以參考下2015-10-10
MyBatis動態(tài)SQL之<choose><when><o(jì)therwise>標(biāo)簽的使用
MyBatis中動態(tài)語句choose-when-otherwise 類似于Java中的switch-case-default語句,本文就來介紹一下MyBatis動態(tài)SQL之<choose><when><o(jì)therwise>標(biāo)簽的使用,感興趣的可以了解一下2023-09-09
Spring Data JPA踩坑記錄(@id @GeneratedValue)
這篇文章主要介紹了Spring Data JPA踩坑記錄(@id @GeneratedValue),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
Spring @Configuration和@Component的區(qū)別
今天小編就為大家分享一篇關(guān)于Spring @Configuration和@Component的區(qū)別,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12
springboot @ConfigurationProperties和@PropertySource的區(qū)別
這篇文章主要介紹了springboot @ConfigurationProperties和@PropertySource的區(qū)別,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
深入了解Java中循環(huán)結(jié)構(gòu)的使用
Java中有三種主要的循環(huán)結(jié)構(gòu):while 循環(huán)、do…while 循環(huán)和for 循環(huán)。本文將來和大家一起講講Java中這三個循環(huán)的使用,需要的可以參考一下2022-08-08

