シロのspringbootの旅(十)-springbootのftp

24630 ワード

キーワード:springboot,ftp
この記事ではspringbootがどのようにftpファイルのアップロードを実現し、フロントエンドフレームワークでアップロードされた画像を受信し、画像をftpピクチャサーバにアップロードするかについて説明します.もちろん、まずftpサーバを構築する必要があります.
1)pom.xml ftp依存性の追加
 
     commons-net
     commons-net
     3.3
 

2)ftpアップロードツールクラスの作成
package com.xiaoi.document.split.common.utils;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.stereotype.Component;

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

/**
 * FtpUtil    ftp     
 *
 * @Author Yuan Jingshan
 * @Date 2018-05-09
 */
@Component
public class FtpUtil {

    //ftp   ip  
    private static final String FTP_ADDRESS = "172.16.205.28";
    //   
    private static final int FTP_PORT = 21;
    //   
    private static final String FTP_USERNAME = "gzxiaoiftp";
    //  
    private static final String FTP_PASSWORD = "gzxiaoi";
    //    
    public final String FTP_BASEPATH = "/home/ftp/develop/";

    public 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)作成制御層処理ファイルアップロード
package com.xiaoi.document.split.management.common.ftp;

import com.xiaoi.document.split.common.utils.FtpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

/**
 * FtpUtil    ftp     
 *
 * @Author Yuan Jingshan
 * @Date 2018-05-30
 */
@Controller
@RequestMapping(value = "/docsplit/ftp")
@Slf4j
public class FtpController {

    @Autowired
    private FtpUtil ftpUtil;

    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    @ResponseBody
    public Map, String> uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException {
        Map, String> map = new HashMap<>();
        map.put("code", "0");
        map.put("msg", "      ");
        String fileName = file.getOriginalFilename();
        log.info("    :{}", fileName);
        InputStream inputStream = file.getInputStream();
        String filePath = null;
        Boolean flag = ftpUtil.uploadFile(fileName, inputStream);
        if (flag == true) {
            log.info("      !");
            filePath = ftpUtil.FTP_BASEPATH + fileName;
            map.put("code", "1");
            map.put("msg", "      ");
        }
        map.put("path", filePath);
        return map; //       ,      ngnix     +filePath,     ngnix         
    }
}

4)フロントエンドでlayuiファイルを使ってアップロード
class="layui-form-item">
class="layui-input-block-new-resource"> id="uploadResourceFile" name="title" lay-verify="title" autocomplete="off" class="layui-input" type="text" style="width: 70%; float: left;">

</span><span style="color:#e8bf6a;">    </span><span style="color:#9876aa;">layui</span>.<span style="color:#9876aa;">use</span>(<span style="color:#6a8759;">'upload'</span><span style="color:#cc7832;">, </span><span style="color:#cc7832;"><strong>function</strong></span>(){
        <span style="color:#cc7832;"><strong>var </strong></span>upload = <span style="color:#9876aa;">layui</span>.<span style="color:#9876aa;">upload</span><span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">        </span><span style="color:#808080;">//    
</span><span style="color:#808080;">        </span><span style="color:#cc7832;"><strong>var </strong></span>uploadInst = upload.<span style="color:#ffc66d;">render</span>({
            <span style="color:#9876aa;">elem</span>: <span style="color:#6a8759;">'#resource_file'</span><span style="color:#cc7832;">, </span><span style="color:#808080;">//    
</span><span style="color:#808080;">            </span><span style="color:#9876aa;">url</span>: <span style="color:#9876aa;">$</span>.<span style="color:#9876aa;">common</span>.<span style="color:#ffc66d;">getContextPath</span>() + <span style="color:#6a8759;">'/docsplit/ftp/upload'</span><span style="color:#cc7832;">, </span><span style="color:#808080;">//    
</span><span style="color:#808080;">            </span><span style="color:#9876aa;">method</span>: <span style="color:#6a8759;">'POST'</span><span style="color:#cc7832;">,
</span><span style="color:#cc7832;">            </span><span style="color:#9876aa;">accept</span>: <span style="color:#6a8759;">'file'</span><span style="color:#cc7832;">,
</span><span style="color:#cc7832;">            </span><span style="color:#9876aa;">size</span>: <span style="color:#6897bb;">50</span><span style="color:#cc7832;">,
</span><span style="color:#cc7832;">            </span><span style="color:#ffc66d;">before</span>: <span style="color:#cc7832;"><strong>function</strong></span>(){
<span style="color:#808080;">//                layer.load();
</span><span style="color:#808080;">            </span>}<span style="color:#cc7832;">,
</span><span style="color:#cc7832;">            </span><span style="color:#ffc66d;">done</span>: <span style="color:#cc7832;"><strong>function</strong></span>(res){
                <span style="color:#cc7832;"><strong>debugger</strong></span><span style="color:#cc7832;">;
</span><span style="color:#cc7832;">                </span><span style="color:#cc7832;"><strong>if </strong></span>(!!res && <span style="color:#9876aa;">$</span>.<span style="color:#9876aa;">constant</span>.<span style="color:#9876aa;">SUCCESS </span>== res.<span style="color:#9876aa;">code</span>) {
                    <span style="color:#9876aa;">$</span>(<span style="color:#6a8759;">"#uploadResourceFile"</span>).<span style="color:#ffc66d;">val</span>(res.<span style="color:#9876aa;">path</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">                </span>} <span style="color:#cc7832;"><strong>else </strong></span>{
                    <span style="color:#9876aa;">$</span>.<span style="color:#9876aa;">common</span>.<span style="color:#9876aa;">layer</span>.<span style="color:#ffc66d;">msg</span>(res.<span style="color:#ffc66d;">msg</span><span style="color:#cc7832;">,</span>{<span style="color:#9876aa;">icon</span>: <span style="color:#6897bb;">0</span>})<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">                </span>}
            }<span style="color:#cc7832;">,</span><span style="color:#ffc66d;">error</span>: <span style="color:#cc7832;"><strong>function</strong></span>(res){
                <span style="color:#9876aa;">$</span>.<span style="color:#9876aa;">common</span>.<span style="color:#9876aa;">layer</span>.<span style="color:#ffc66d;">msg</span>(<span style="color:#9876aa;">$</span>.<span style="color:#9876aa;">constant</span>.<span style="color:#9876aa;">EXCEPTION</span><span style="color:#cc7832;">,</span>{<span style="color:#9876aa;">icon</span>: <span style="color:#6897bb;">2</span>})<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">            </span>}
        })<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>})<span style="color:#cc7832;">;</span></pre> 
  <p>5)    </p> 
  <p><a href="https://img.  .com/image/info8/8dfe75baf4ca47ecb8c6f25f4392ff60.jpg" target="_blank"><img src="https://img.  .com/image/info8/8dfe75baf4ca47ecb8c6f25f4392ff60.jpg" alt="   springboot  ( ) - springboot ftp_ 1   " width="650" height="349" style="border:1px solid black;"></a><br></p> 
  <p><a href="https://img.  .com/image/info8/b3a672b84ffd4fdaabad1b6f4e0ecaa5.jpg" target="_blank"><img src="https://img.  .com/image/info8/b3a672b84ffd4fdaabad1b6f4e0ecaa5.jpg" alt="   springboot  ( ) - springboot ftp_ 2   " width="650" height="336" style="border:1px solid black;"></a><br></p> 
  <p><a href="https://img.  .com/image/info8/b3eb8a55b6a249359ded3e10cf8ec8f4.jpg" target="_blank"><img src="https://img.  .com/image/info8/b3eb8a55b6a249359ded3e10cf8ec8f4.jpg" alt="   springboot  ( ) - springboot ftp_ 3   " width="650" height="337" style="border:1px solid black;"></a><br></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC WAP    -->
                    <div id="SOHUCS" sid="1280609597136060416"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js">
                    
                     
                
興味があるかもしれません
  • Hadoop(一)
    朱輝輝33
    hadoop linux
  • maven An error occurred while filtering resources
    blackproof
    maven 誤報
  • jdk常用トラブルシューティングコマンド
    daysinsun
    jvm
  • JAvaシフト演算と乗算
    周凡楊
    java へんい えんざん 乗算#ジョウサン#
  • JAvaでの列挙(enmu)
    g21121
    java
  • MQ初級学習
    510888780
    activemq
  • Spring_Transactional_Propagation
    布衣凌宇
    spring transactional
  • 私のspring学習ノート12-idrefとrefの違い
    aijuans
    spring
  • アルファベットで分類:
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z その他
    トップページ -
    私たちについて -
    構内検索 -
    Sitemap -
    権利侵害苦情
    著作権すべてのIT知識ベースCopyRight© 2000-2050 IT知識ベースIT 610.com , All Rights Reserved.
    京ICP備09083238号