Java實(shí)現(xiàn)圖片上傳至服務(wù)器功能(FTP協(xié)議)
本文為大家分享了java實(shí)現(xiàn)圖片上傳至服務(wù)器功能的具體代碼,供大家參考,具體內(nèi)容如下
本案例實(shí)現(xiàn)圖片上傳功能分為兩個(gè)步驟,分別為
(1)APP用base64加密將圖片內(nèi)容上傳至服務(wù)器(http協(xié)議),在臨時(shí)目錄中先存儲(chǔ)好圖片;
(2)將服務(wù)器臨時(shí)存儲(chǔ)的圖片用FTP協(xié)議上傳至另一臺(tái)專門(mén)用做存儲(chǔ)圖片的服務(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"))) {
// 開(kāi)啟服務(wù)器對(duì)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客戶端出錯(cuò)!", e);
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
throw new EhospitalServiceException(ResponseCode.RESPONSE_COMMON_ERROR_CODE, "關(guān)閉FTP連接發(fā)生異常!", e);
}
}
}以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot通過(guò)ObjectMapper配置json序列化詳解
SpringBoot默認(rèn)集成Jackson庫(kù),其中ObjectMapper類是核心,用于Java對(duì)象與JSON字符串的互轉(zhuǎn),提供配置序列化特性、注冊(cè)模塊等方法,在SpringBoot中可以全局配置JSON格式,如日期格式化、將Long轉(zhuǎn)為字符串,還可以配置序列化時(shí)的各種規(guī)則,感興趣的可以了解一下2024-10-10
RabbitMQ的ACK確認(rèn)機(jī)制保障消費(fèi)端消息的可靠性詳解
這篇文章主要介紹了RabbitMQ的ACK確認(rèn)機(jī)制保障消費(fèi)端消息的可靠性詳解,簡(jiǎn)單來(lái)說(shuō),就是你必須關(guān)閉 RabbitMQ 的自動(dòng)ack ,可以通過(guò)一個(gè) api 來(lái)調(diào)用就行,然后每次你自己代碼里確保處理完的時(shí)候,再在程序里 ack 一把,需要的朋友可以參考下2023-12-12
AsyncHttpClient的默認(rèn)配置源碼流程解讀
這篇文章主要為大家介紹了AsyncHttpClient的默認(rèn)配置源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Spring Boot的listener(監(jiān)聽(tīng)器)簡(jiǎn)單使用實(shí)例詳解
監(jiān)聽(tīng)器(Listener)的注冊(cè)方法和 Servlet 一樣,有兩種方式:代碼注冊(cè)或者注解注冊(cè)。接下來(lái)通過(guò)本文給大家介紹Spring Boot的listener(監(jiān)聽(tīng)器)簡(jiǎn)單使用,需要的朋友可以參考下2017-04-04
springboot集成mqtt的實(shí)踐開(kāi)發(fā)
本篇文章主要介紹了springboot集成mqtt的實(shí)踐開(kāi)發(fā),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Spring?Boot中自動(dòng)執(zhí)行sql腳本的方法實(shí)例
在SpringBoot的架構(gòu)中,DataSourceInitializer類可以在項(xiàng)目啟動(dòng)后初始化數(shù)據(jù),我們可以通過(guò)自動(dòng)執(zhí)行自定義sql腳本初始化數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Spring?Boot中自動(dòng)執(zhí)行sql腳本的相關(guān)資料,需要的朋友可以參考下2022-01-01
springSecurity實(shí)現(xiàn)簡(jiǎn)單的登錄功能
這篇文章主要為大家詳細(xì)介紹了springSecurity實(shí)現(xiàn)簡(jiǎn)單的登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09

