springBoot整合ftp上傳圖片功能

知識點:前端

       springBoot後端項目,接收前端框架傳到的圖片,把圖片上傳到ftp圖片服務器上java

注意:在上傳的過程當中可能回出現,能夠建立文件夾,可是圖片上傳不了的問題;web

嘗試了網上的不少方法,最後將filename改成全路徑上傳成功spring

 

1. pom.xml中引入依賴的包apache

<!-- 加入上傳文件組件 -->
<!-- https://mvnrepository.com/artifact/commons-net/commons-net -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>


2.ftp上傳工具類FtpFileUtil.java
package com.hand.hand.util;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

import java.io.IOException;
import java.io.InputStream;

/**
* Created by nishuai on 2018/1/12.
*/
public class FtpFileUtil {

//ftp服務器ip地址
private static final String FTP_ADDRESS = "101.132.1.113";
//端口號
private static final int FTP_PORT = 21;
//用戶名
private static final String FTP_USERNAME = "ftp";
//密碼
private static final String FTP_PASSWORD = "123456";
//圖片路徑
private static final String FTP_BASEPATH = "/home/ftpadmin/health/images";

public static boolean uploadFile(String originFileName,InputStream input){
boolean success = false;
FTPClient ftp = new FTPClient();
ftp.setControlEncoding("GBK");
try {
int reply;
ftp.connect(FTP_ADDRESS, FTP_PORT);// 鏈接FTP服務器
ftp.login(FTP_USERNAME, FTP_PASSWORD);// 登陸
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.makeDirectory(FTP_BASEPATH );
ftp.changeWorkingDirectory(FTP_BASEPATH );
ftp.storeFile(originFileName,input);
input.close();
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}

}



3.controller層接口 FtpFileUploadController.java
package com.hand.hand.controller;import com.hand.hand.util.FtpFileUtil;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.*;import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest;import java.io.IOException;import java.io.InputStream;/** * Created by nishuai on 2017/12/26. */@CrossOrigin@Controllerpublic class FtpFileUploadController {    //ftp處理文件上傳    @RequestMapping(value="/ftpuploadimg", method = RequestMethod.POST)    public @ResponseBody String uploadImg(@RequestParam("file") MultipartFile file,                                          HttpServletRequest request) throws IOException {        String fileName = file.getOriginalFilename();        InputStream inputStream=file.getInputStream();        String filePath=null;        Boolean flag=FtpFileUtil.uploadFile(fileName,inputStream);        if(flag==true){            System.out.println("ftp上傳成功!");            filePath=fileName;        }        return  filePath;  //該路徑圖片名稱,前端框架可用ngnix指定的路徑+filePath,便可訪問到ngnix圖片服務器中的圖片    }}
相關文章
相關標籤/搜索