图片服务器搭建 ftp上传http协议读取图片

2023-05-16

怎样在Win7系统中搭建Web服务器

详见百度搭建教程web服务器搭建
web服务器搭建
搭建好服务器以后配置

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

controller层

/**
     * 上传头像
     */
    @RequestMapping(value="uploadPhotoHead")//, produces = {"application/json;charset=UTF-8"}
    @ResponseBody
    public String uploadPhotoHead(HttpServletRequest request,Integer userId){
        Result<String> result=new Result<>(false);
        try {
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            MultipartFile file = multipartRequest.getFile("upFile"); 
            result=userBizService.uploadPhotoHead(file,userId);
        } catch (Exception e) {
            result.setMessage(e.getMessage());
        }
        return result.toJsonResult();
    }

UserBizServiceImpl实现类

@Override
    @Transactional(readOnly = false)  
    public Result<String> uploadPhotoHead(MultipartFile file,Integer userId) {
        Result<String> result=new Result<>(false);
        User user=userService.findByPrimaryKey(userId);
        if(user==null){
            result.setMessage("用户不能为空");
            result.setSuccess(false);
            return result;
        }
        String date=new SimpleDateFormat("yyyyMMdd").format(new Date());
        File file2=new File(file.getOriginalFilename());
        try {
            file.transferTo(file2);
            ftpUtils.connect("", CommonConstant.addr, CommonConstant.port, CommonConstant.username, CommonConstant.password);
            if(ftpUtils.isExistDir(date)){
                    uploadPicture( file2, date);
            }else{
                ftpUtils.mkDir(date);
                uploadPicture( file2, date);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }finally {
            if(file2.exists()){
                file2.delete();
            }
        }
        user.setPhotoHead("/"+date+"/"+file.getOriginalFilename());
        userService.updateByPrimaryKeySelective(user);
        result.setMessage("上传成功");
        result.setSuccess(true);
        return result;
    }

    private void uploadPicture( File file2, String date) throws Exception {
        ftpUtils.changeWorkingDirectory(date);
        ftpUtils.upload(file2);
        ftpUtils.closeFtp();
    }

FtpUtils 工具类

package com.baobaotao.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

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

@Component
public class FtpUtils {

    private FTPClient ftp;

    /**
     * 
     * @param path
     *            上传到ftp服务器哪个路径下
     * @param addr
     *            地址
     * @param port
     *            端口号
     * @param username
     *            用户名
     * @param password
     *            密码
     * @return
     * @throws Exception
     */
    public boolean connect(String path, String addr, int port, String username, String password) throws Exception {
        boolean result = false;
        ftp = new FTPClient();
        ftp.setControlEncoding("GBK");
        int reply;
        ftp.connect(addr, port);
        ftp.login(username, password);
        ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
        reply = ftp.getReplyCode();
        if (!FTPReply.isPositiveCompletion(reply)) {
            ftp.disconnect();
            return result;
        }
        result = ftp.changeWorkingDirectory(path);
        return result;
    }

    /**
     * 
     * @param file
     *            上传的文件或文件夹
     * @throws Exception
     */
    public void upload(File file) throws Exception {
        if (file.isDirectory()) {
            ftp.makeDirectory(file.getName());
            ftp.changeWorkingDirectory(file.getName());
            String[] files = file.list();
            for (int i = 0; i < files.length; i++) {
                File file1 = new File(file.getPath() + "\\" + files[i]);
                if (file1.isDirectory()) {
                    upload(file1);
                    ftp.changeToParentDirectory();
                } else {
                    File file2 = new File(file.getPath() + "\\" + files[i]);
                    FileInputStream input = new FileInputStream(file2);
                    ftp.storeFile(file2.getName(), input);
                    input.close();
                }
            }
        } else {
            try {
                File file2 = new File(file.getPath());
                FileInputStream input = new FileInputStream(file2);
                ftp.storeFile(file2.getName(), input);
                input.close();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }

        }

    }

    /**
     * 关闭连接
     */
    public void closeFtp() {
        if (ftp.isConnected()) {
            try {
                ftp.disconnect();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 更改目录
     * 
     * @param path
     */
    public void changeWorkingDirectory(String path) {
        if (ftp.isConnected()) {
            try {
                ftp.changeWorkingDirectory(path);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("未连接");
        }
    }

    /**
     * 判断ftp上是否存在路径
     * 
     * @return boolean
     */
    public boolean isExistDir(String path) {
        try {
            return ftp.changeWorkingDirectory(path);
        } catch (IOException e) {
            return false;
        }
    }

    /**
     * 在ftp上创建文件夹
     * 
     * @param dir
     *            文件夹名字
     */
    public void mkDir(String dir) {

        try {
            ftp.makeDirectory(dir);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws Exception {
        FtpUtils t = new FtpUtils();
        t.connect("", "10.101.145.59", 2121, "ftp", "Ac549058387");
        t.changeWorkingDirectory("/FtpDownload/20160913");
        // File file = new File("D:\\download\\开发说明.doc");
        File file = new File("D:\\xx.txt");
        t.upload(file);
        t.closeFtp();
        System.out.println("cc");
    }

}

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %>
<html>
    <head>
        <title>请上传用户头像</title>
    </head>
    <body>
        <h1>
            请选择上传的头像文件
        </h1>
        <form method="post" action="<c:url value="/baobaotao/user/uploadPhotoHead"/>" enctype="multipart/form-data">
            <input type="text" name="name" value="中国"/>
            <input type="file" name="upFile" />
            <input name="userId" value="1">
            <input type="submit" />
        </form>

        <img src="http://10.101.145.59:8080/20160913/Tulips.jpg"/>
    </body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图片服务器搭建 ftp上传http协议读取图片 的相关文章

  • centos gnome面板菜单任务栏消失后的解决

    centos gnome面板菜单任务栏消失后的解决 症状 xff1a 进入linux系统后上下面板的任务栏都消失了 xff0c 系统自带的很多程序无法运行 修改桌面的分辨率 更换系统的中 英文文字 xff0c 重启桌面后问题依旧 网上搜索到
  • 【DDD】持久化领域对象的方法实践

    概述 在实践领域驱动设计 xff08 DDD xff09 的过程中 xff0c 我们会根据项目的所在领域以及需求情况捕获出一定数量的领域对象 设计得足够好的领域对象便于我们更加透彻的理解业务 xff0c 方便系统后期的扩展和维护 xff0c
  • 旋转屏幕后Dialog消失的解决办法

    旋转屏幕后总会出现这样那样的bug问题 xff0c 现在我们来解决一个简单的吧 xff5e 当旋转屏幕 xff08 纵 xff0d 横 xff09 后 xff0c Activity会重新调用onCreate 方法 xff0c 所以 xff0
  • 生产者-消费者模型

    什么是生产者消费者模型 生产者 消费者模型 xff08 Producer consumer problem xff09 是一个非常经典的多线程并发协作的模型 xff0c 在分布式系统里非常常见 这个模型由两类线程和一个缓冲区组成来组成 生产
  • Python经典列题:如何用for循环或者while循环判断100以内的素数

    方法一 xff1a 用while 循环判断100以内的素数 代码如下 xff1a a 61 2 while a lt 61 100 if a 2 61 0 and a 9 61 0 print a a 43 61 1 代码结果如下 xff1
  • 黑苹果详细安装教程-基于OpenCore官网指导-UPUPMO(macOS Monterey)

    文章大纲 01 必备知识 02 作者当前硬件说明 03 主板 BIOS 版本升级 04 确定声卡 网卡信息 05 配置 EFI 驱动 06 配置 ACPI xff08 SSDTs xff09 07 配置 config plist 08 制作
  • 各品牌电脑PE中找不到硬盘的解决方法

    大部分小伙伴遇到系统坏了之后 xff0c 都会自己使用u盘进入pe装系统 xff0c 但是在u盘装系统过程中却容易遇到问题 xff0c 特别是PE中找不到硬盘的情况 xff0c 大家遇到这种情况该怎么解决呢 xff0c 所以今天跟着快启动小
  • Python爬虫实战: 多进程爬取百度百科页面超链接

    Python爬虫实战 多进程爬取百度百科页面超链接 最近因为需要 xff0c 爬取了实体知识库里每个实体在百度百科页面下的所有超链接内容 xff0c 这部分工作结束后 xff0c 想着既是总结也是分享 xff0c 把这部分工作和代码记录下来
  • Hugging face快速入门

    Hugging face Introduction Hugging face 是一家总部位于纽约的聊天机器人初创服务商 xff0c 开发的应用在青少年中颇受欢迎 xff0c 相比于其他公司 xff0c Hugging Face更加注重产品带
  • Nginx(二)初识配置文件【简单认识】

    版本 xff1a nginx x86 64 1 1 14 0 1 el7 4 ngx cat nginx conf 定义Nginx运行的用户和用户组 user nginx nginx进程数 xff0c 建议设置为等于CPU总核心数 work
  • MacBookM1远程连接云服务器安装boche+pintos

    1 前言 因为M1芯片的缘故 xff0c 没法直接在虚拟机 xff08 PD VMware xff09 上操作实验 xff0c 故出此下策 如果有条件还是希望uu们在装配有windows系统的笔记本上操作 此方法基于远程连接 xff0c 因
  • Vmware 实现自动\开机启动\关机挂起

    1 编写脚本 start bat ping 127 0 0 1 n 5 设置登录后 过几秒钟再启动虚拟机 34 C Program Files x86 VMware VMware Workstation vmrun exe 34 start
  • Python爬虫——BeautifulSoup的基本使用

    Python爬虫 BeautifulSoup的基本使用 安装beautifulsoup4模块 pip span class token function install span beautifulsoup4 1 创建BeautifulSo
  • python环境:本地有网服务器的python环境,迁移到离线服务器

    A服务器的虚拟环境 xff0c 迁移到离线服务器B xff08 已安装好anaconda xff09 设 xff1a A服务器的虚拟环境名称为 xff1a flask env 创建虚拟环境 在A服务器data01目录下 使用mkdir创建目
  • ROI管理与客户需求管理

    转自 xff1a http semwatch org 2010 02 roi management and client demand 作者 xff1a Gaoge 日期 xff1a 二月 26 2010 分类 xff1a 付费搜索SEM
  • 人脸识别过程

    做人脸识别的朋友很多不知道人脸识别过程 xff0c 人脸识别厂家人脸识别过程 人脸识别第一步先进行图像采集 xff0c 人脸定位 xff0c 特征提取 xff0c 特征对比 xff0c 人脸资料存储 xff0c 识别成功就可以开门 xff0
  • 个人博客的三种方式

    创建个人博客的三种方式 1 博客平台 简书 CSDN 知乎专栏等 特点 xff1a 简单 xff0c 可控性低 申请个账号就可以写 xff0c 其他的都不用管 限制多 xff0c 界面 排版 有没有广告自己说了不算 xff0c 什么能发什么
  • GitHub 简介

    用详细的图文对GitHub进行简单的介绍 git是一个版本控制工具 xff0c github是一个用git做版本控制的项目托管平台 主页介绍 xff1a overview xff1a 总览 相当于个人主页 repositories xff1
  • Markdown 编辑器推荐和常用语法介绍

    Markdown 是非常好用的文档编写方式 下面是我的 Markdown 学习总结 不求详尽 xff0c 只求简明 编辑器 xff1a 我目前使用的 Markdown 编辑器是 Joplin xff0c 感觉挺好用 我对编辑器的需求是 xf
  • 使用 Hexo 在 Github 上建博客

    先确认 git 与 npm 已经安装 xff0c 在终端输入以下命令 git version npm version 安装 hexo xff0c 在终端输入 npm install hexo cli g 安装过程中如果报错 解决方法 xff

随机推荐

  • ping命令的过程

    ping命令的过程 1 ping是什么 xff1f PING Packet Internet Groper xff0c 因特网包探索器 xff0c 用于测试网络连通性的程序 Ping发送一个ICMP Internet Control Mes
  • Hexo 更换主题

    更换 Hexo 主题非常容易 xff0c 只要在 themes 文件夹内 xff0c 新增一个任意名称的文件夹 xff0c 并修改 config yml 内的 theme 设定 xff0c 即可切换主题 具体步骤 xff1a 1 安装主题
  • Python 爬虫零基础教程(0):简介及准备

    其他的教程往往从语法开始 xff0c 而我们直接开始爬虫 xff0c 语法等知识边做边学 这第0篇我们简单介绍下爬虫和编程工具 爬虫是什么 爬虫是自动浏览 保存网页内容的程序或脚本 爬虫不同于黑客 xff0c 爬虫爬取的是允许访问的内容 工
  • 如何解决Unable to parse template "Interface"Error Message;

    Unable to parse template Interface Error Message This Template did not Produce a Java Class or an interface关于这个错误 xff0c
  • inflate函数使用总结

    inflate 两个参数和三个参数的区别 以前使用没有关注过 xff0c 因为觉得没报bug就行了 xff0c 两个三个参数无所谓 xff0c 经过导师提醒 xff0c 决定好好看看源码和相关知识 xff0c 总觉一下区别 xff0c 以免
  • 除了csdn网站打不开,一直刷新等待没反应,其他网站都能正常访问

    DNS错误 自动获取DNS服务器地址 清除DNS缓存信息 ipconfig span class token operator span flushdns 重置winsock 目录设置 netsh winsock reset
  • org.slf4j用法

    org slf4j用法 Scala 1 创建Logger对象 private val logger Logger 61 LoggerFactory getLogger classOf HttpBmlClient 2 打印错误信息 同时抛出异
  • 安装图形界面、VNCserver

    centos7 安装图形界面 xff1a 第一步 xff1a 安装Gnome包 在命令行下 输入下面的命令来安装Gnome包 yumgroupinstall 34 GNOMEDesktop 34 34 GraphicalAdministra
  • MySQL全量、增量备份与恢复的简单方法

    本文主要给大家介绍MySQL全量 增量备份与恢复的简单方法 xff0c 文章内容都是笔者用心摘选和编辑的 xff0c 具有一定的针对性 xff0c 对大家的参考意义还是比较大的 xff0c 下面跟笔者一起了解下MySQL全量 增量备份与恢复
  • windows安装zabbix代理

    一 关闭windows防火墙或者开通10050和10051端口 直接windows关闭防火墙或者在防火墙中放行10050和10051 二 xff0e 下载 安装并修改windows代理 1 下载zabbix agentd包 官网下载地址 x
  • android8.0 Fingerprint 指纹输错5次后亮屏显示错误信息

    当有指纹解锁时 xff0c 会执行AuthenticationClient java gt onAuthenticated 一直在监听解锁行为 64 Override public boolean onAuthenticated int f
  • secureCRT 抓取串口数据

    language 61 34 VBScript 34 interface 61 34 1 0 34 Dim outputFile fout Dim outputPath Dim user outputPath 61 34 D out txt
  • 2022年编程语言热度排行榜来啦,快来看看你学习的语言排第几

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 前言 一直以来 xff0c 编程语言都是程序员非常关注的话题 年末将至 xff0c 是否会有程序员发出疑问 2022 年行业需求最大的编程
  • LibEvent-Demo

    libevent test cpp 定义控制台应用程序的入口点 include 34 stdafx h 34 pragma comment lib 34 ws2 32 lib 34 pragma comment lib 34 wsock32
  • 【数据挖掘】DBSCAN聚类算法(python实现)

    一 python代码 39 39 39 Author Vici date 2020 5 14 39 39 39 import math 39 39 39 Point类 xff0c 记录坐标x xff0c y和点的名字id 39 39 39
  • ubuntu中安装rpm格式的软件包

    ubuntu的软件包格式是deb xff0c 如果要安装rpm的包 xff0c 则要先用alien把rpm转换成deb zhhLinux联盟 sudo apt get install alien alien默认没有安装 xff0c 所以首先
  • SQLite3在windows下的配置(链接VC++或者VS)

    一 SQLite3 简介 SQLite3 是一个开源免费的嵌入式关系数据库 xff0c 它在 2000 年由 D Richard Hipp 发布 xff0c 它不像大型数据库管理系统 xff0c 占用系统大量资源 SQLite3 是用 C
  • 电脑正常联网,提示无法登录微信

    事故起因 xff1a 因为工作需要安装一款软件 xff0c 安装途中提示有风险直接忽略了该风险 后期卸掉该软件 xff0c 然后无法登录微信 QQ easyconnect等软件 xff0c 但是浏览器可以正常访问 登录微信出现的界面是 xf
  • Ubuntu-GNOME 16.04 LTS更换主题

    1 安装gnome shell扩展插件 进入https extensions gnome org 先将gnome安装插件安装到火狐浏览器上 xff0c 而后查找插件 User Themes by fmuellner 如果无法选择比如题头报错
  • 图片服务器搭建 ftp上传http协议读取图片

    怎样在Win7系统中搭建Web服务器 详见百度搭建教程web服务器搭建 web服务器搭建 搭建好服务器以后配置 controller层 span class hljs javadoc 上传头像 span span class hljs an