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