精华内容
下载资源
问答
  • 主要介绍了Java使用SFTP上传文件到服务器的简单使用,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • 是不是不会传文件?别急 下面就是方法: 一、上传文件linux服务器 首先从你本地切换你要上传文件的目录,接下来: scp 文件名字 服务器用户名字@服务器ip:目录 例子: scp index....
  • ** 一、使用docker 安装 vsftpd** 参考文档:...使用docker部署文件服务器: 1.1 获取镜像 #寻找vsftpd的镜像 1.1.1.docker search vsftpd 1.1.2.docker pull fauria/vsftpd 1.2 创建vsft...

    **

    一、使用docker 安装 vsftpd**

    参考文档:https://blog.csdn.net/qq_41201816/article/details/83930133
    使用docker部署文件服务器:

    1.1 获取镜像

    #寻找vsftpd的镜像

    1.1.1.docker search vsftpd

    在这里插入图片描述

    1.1.2.docker pull fauria/vsftpd

    在这里插入图片描述

    1.2 创建vsftpd容器

    docker run -d -p 21:21 -p 20:20 -p 21100-21110:21100-21110 -v /Ftpfile:/home/vsftpd -e FTP_USER=连接用户名 -e FTP_PASS=连接密码 -e PASV_ADDRESS=你的ip -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 --name vsftpd --restart=always fauria/vsftpd
    在这里插入图片描述

    注释说明:
    #FTP_USER : 设置远程连接的账户名
    #FTP_PASS : 远程连接的密码
    #-p进行端口绑定映射
    -v进行文件目录的映射 FTP_UESR 和FTP_PASS如果设定了会在container里面的
    #/etc/vsftpd/virtual_users.txt
    #PASV_MIN_PORT和PASV_MAX_PORT映射的是被动模式下端口使用范围
    #PASV_ADDRESS指的的宿主机地址

    1.3 修改配置

    1、我们先进入container里面
    docker exec -i -t vsftpd bash
    2、修改并生成虚拟用户模式下的用户db文件
    vi /etc/vsftpd/virtual_users.txt
    #编辑配置文件写入用户跟密码
    3、假如我们添加了user用户
    mkdir /home/vsftpd/user #建立新用户文件夹
    /usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
    #把登录的验证信息写入数据库

    1.4 重启,使用Xftp验证连接

    先退出容器 :Ctrl +d
    重启vsftpd 服务: docker restart vsftpd

    二、Java 实现文件上传**

    2.1 引入maven 依赖

    <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.3</version>
    </dependency>
    

    2.2 编写文件上传方法

    /**

    • 保存图片到文件服务器

    • @param file

    • @return
      */
      public static String uploadImageToFileServer(MultipartFile file) {

           if(file.getSize() > EViewConstant.FtpFileServer.SIZE){
               log.info("上传的文件大小超过10mb");
               return  "";
           }
           InputStream inputStream = null;
       
           String fileName = file.getOriginalFilename();
           //获取文件的格式
           String fileType = fileName.substring(fileName.indexOf(".")).toLowerCase().trim();
           //生成一个随机的文件名,避免重名覆盖
           String randomString= UUID.randomUUID().toString().replaceAll("-","");
           String fileNewName = randomString+fileType;
       
           FTPClient ftpClient = new FTPClient();
           try{
               //连接到FTP 服务器
               ftpClient.connect(EViewConstant.FtpFileServer.HOST, EViewConstant.FtpFileServer.PORT);
               ftpClient.login(EViewConstant.FtpFileServer.USER_NAME,EViewConstant.FtpFileServer.PASSWORD);
               //ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
               ftpClient.changeWorkingDirectory("/Ftpfile/eiot");
               //ftp上传文件是以文本形式传输的,所以多媒体文件会失真,需要转为二进制形式传输
               ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
               if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
                   log.info("未连接到FTP,用户名或密码错误。");
                   ftpClient.disconnect();
               } else {
                   log.info("FTP连接成功");
               }
               long start = System.currentTimeMillis();
               inputStream = file.getInputStream();
               //转码后可以文件名可以为中文ftpClient.storeFile(new String(fileNewName.getBytes("GBK"), "iso-8859-1"), inputStream);
              // ftpClient.enterLocalPassiveMode();
               boolean fig = ftpClient.storeFile(fileNewName, inputStream);
               if(fig){
                   long end = System.currentTimeMillis();
                   log.info(String.format("文件:%s上传成功,耗时:%d毫秒",fileNewName,(end-start)));
               }else {
                   log.info("上传失败");
                   return  "";
               }
           }catch (IOException io){
                io.printStackTrace();
                log.error("保存图片到文件服务器ERROR:"+io.getMessage());
                return  "";
           }finally {
               //关闭资源
               try {
                   if(null != inputStream){
                       inputStream.close();
                   }
                   //退出
                   ftpClient.logout();
                   //断开连接
                   ftpClient.disconnect();
               }catch (IOException io){
                   log.error("保存图片到文件服务器关闭资源ERROR"+io.getMessage());
               }
           }
           return  EViewConstant.FtpFileServer.IMAGE_URL+fileNewName;
      

    }
    上传成功
    在这里插入图片描述
    在这里插入图片描述

    三、图片展示

    3.1 文件展示需要配置nginx 的配置文件

    /etc/nginx/conf.d
    vi default.conf
    增加一个server配置
    在这里插入图片描述
    #图片配置
    server{
    listen 90;
    server_name localhost;
    location ~ .(gif|jpg|jpeg|png|bmp|swf)$ {
    root /Ftpfile;
    proxy_temp_path /Ftpfile;
    }
    }
    设置nginx 访问权限(修改为root):
    在这里插入图片描述
    浏览器地址直接输入:ip +端口+图片路径
    在这里插入图片描述

    展开全文
  • 有时候我们会有一些需求需要上传一些图片或者一些文件,我们写一个小例子来实现这个功能. 我这次是针对上传图片来做的,其实就是后缀名限制,返回自己定义 import java.io.File; import java.io.IOException; import ...

    有时候我们会有一些需求需要上传一些图片或者一些文件,我们写一个小例子来实现这个功能.

    我这次是针对上传图片来做的,其实就是后缀名限制,返回自己定义

    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Random;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    
    @RestController
    @RequestMapping("/company/public")
    public class PublicController {
    
        /**
         * 上传用户反馈图片
         * @param file
         * @param request
         * @param response
         * @author sunran
         * @return
         */
        @ResponseBody
        @RequestMapping("/upload")
        public Object uploadPicture(@RequestParam(value="file",required=false)MultipartFile file,HttpServletRequest request,HttpServletResponse response){
        	ResultResp result = new ResultResp();
        	int maxSize = 1024*1024*1;    //上传最大为1MB
        	if (file.getSize()>maxSize) {
        		result.setMsg("最大上传限制1Mb");
                return result;
    		}
    		Map<String, Object> map = new HashMap<String, Object>();
            File targetFile=null;
            String url="";//返回存储路径
            String fileName=file.getOriginalFilename();//获取文件名加后缀
            if(fileName!=null&&fileName!=""){
                String path = "/data/file/";
                //String path = "D:/data/file/";
                String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());//文件后缀
                if (!(fileF.equals(".jpg") || fileF.equals(".jpeg") || fileF.equals(".png") || fileF.equals(".image"))) {
                    result.setMsg("只能上传jpg,jpeg,png,image格式");
                    return result;
    			}
                //新的文件名
                fileName=new Date().getTime()+"_"+new Random().nextInt(1000)+fileF;
                //获取文件夹路径
                File file1=new File(path); 
                //如果文件夹不存在则创建    
                if(!file1.exists()  && !file1.isDirectory()){       
                    file1.mkdirs();  
                }
                //将图片存入文件夹
                targetFile = new File(file1, fileName);
                try {
                	//将上传的文件写到服务器上指定的文件。
                	file.transferTo(targetFile);
    				//赋予权限
                    String command = "chmod 775 -R " + targetFile;
            		Runtime runtime = Runtime.getRuntime();
            		Process proc = runtime.exec(command);
                    //生成文件地址
                    url="http://XXXXXXXXX.cn"+path+"/"+fileName;
                    result.setCode(200+"");
                    result.setMsg("图片上传成功");
                    System.out.println("图片上传成功 url:"+url);
                    map.put("url", url);
                    result.setData(map);
                } catch (Exception e) {
                    e.printStackTrace();
                    result.setMsg("系统异常,图片上传失败");
                }
            }
            return result;
        }
    }
    

    我们可以本地测试一下,把路径改成我们电脑本地就行了

    在这里插入图片描述
    在这里插入图片描述

    测试一下

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 一,实现文件上传(图片,文件,音视频) 普通的上传 @Override public Object uploadImage(MultipartFile file) { //获取文件名 String originalFilename = file.getOriginalFilename(); //获取文件后缀名 ...
    一,实现文件上传(图片,文件,音视频)

    普通的上传

    @Override
    public Object uploadImage(MultipartFile file) {
        //获取文件名
        String originalFilename = file.getOriginalFilename();
        //获取文件后缀名
        String substring = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
        System.out.println(substring);
        //使用时间戳改变文件名
        String fileName = System.currentTimeMillis()+"."+substring;
        String filePath = "E:\\data\\";
        String fileUrl = filePath+fileName;
        File dest = new File(fileUrl);
        //判断是否存在此目录,不存在则创建此目录
        if (!dest.getParentFile().exists()){
            dest.getParentFile().mkdirs();
        }
        try {
            file.transferTo(dest);
        }catch (Exception e){
            e.printStackTrace();
            return CommonResult.failed(originalFilename+"上传失败!");
        }
        return CommonResult.success("上传成功!  "+fileUrl);
    }
    

    二,文件上传到OSS服务器

    需要引入的依赖

    <!--OSS-->
            <dependency>
                <groupId>com.aliyun.oss</groupId>
                <artifactId>aliyun-sdk-oss</artifactId>
                <version>2.4.0</version>
            </dependency>
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.1</version>
            </dependency>
            <dependency>
                <groupId>org.jdom</groupId>
                <artifactId>jdom</artifactId>
                <version>1.1.3</version>
            </dependency>
    

    具体的代码,不包含业务逻辑

     @Override
        public Object uploadImageOss(MultipartFile file) throws Exception {
            // Endpoint以北京为例,其它Region请按实际情况填写。
            String endpoint = "http://oss-cn-beijing.aliyuncs.com";
            // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
            String accessKeyId = "xxxxxxxx";
            String accessKeySecret = "xxxxxxx";
            //创建的bucket名
            String bucketName = "xxxxxx";
    		//获取文件名
            String originalFilename = file.getOriginalFilename();
            //获取文件后缀名
            String substring = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
            //使用uuid作为文件名防止重复
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            String fileName = uuid+"."+substring;
            final File tempFile = File.createTempFile(uuid, substring);
            //MultipartFile  转换为 File
            file.transferTo(tempFile);
            // 创建OSSClient实例。
            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
            try {
                //容器不存在,就创建
                if(! ossClient.doesBucketExist(bucketName)){
                    ossClient.createBucket(bucketName);
                    CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
                    createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
                    ossClient.createBucket(createBucketRequest);
                }
                String fileHost = "upload";
                //上传文件
                //File file1 = multipartFileToFile(file);
                //创建文件路径
                String fileUrl= fileHost+"/"+fileName;
                PutObjectResult result = ossClient.putObject(new PutObjectRequest(bucketName, fileUrl, tempFile));
                //设置权限 这里是公开读
                ossClient.setBucketAcl(bucketName,CannedAccessControlList.PublicRead);
                if(null != result){
                    log.info("==========>OSS文件上传成功,OSS地址:"+fileUrl);
                    return CommonResult.success(fileUrl);
                }
            }catch (OSSException oe){
                log.error(oe.getMessage());
            }catch (ClientException ce){
                log.error(ce.getMessage());
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                //关闭
                ossClient.shutdown();
            }
            //删除临时生成的文件
            deleteFile(tempFile);
            return null;
        }
    
        /**
         * 删除
         *
         * @param files
         */
        private void deleteFile(File... files) {
            for (File file : files) {
                if (file.exists()) {
                    file.delete();
                }
            }
        }
    
    展开全文
  • java上传文件到Linux设置文件权限

    千次阅读 2019-01-23 17:01:03
    Runtime.getRuntime().exec("chmod 777 -R " + filepath);//这里的filepath写基础路径也可以

    Runtime.getRuntime().exec("chmod 777 -R " + filepath);//这里的filepath写基础路径也可以

    展开全文
  • 使用JAVA代码实现文件上传到阿里云服务器

    万次阅读 多人点赞 2020-01-06 19:46:05
    Java 项目开发中阿里云 oss上传本地到服务器,这篇博客给出了完整的代码实现
  • JAVA上传文件到Windows服务器_共享目录(详细教程)

    千次阅读 热门讨论 2020-06-13 17:30:19
    这里首先要说一点,由于Windows系统设计的特殊性,不像我们常用的Linux系统那样,可通过默认SSH、SFTP等方式连接就可直接上传文件。所以这里选择的是使用Windows共享目录的方式,是不需要安装任何东西,使用共享目录...
  • 近段时间java代码向服务器上传文件的代码。可是屡试不行。很是郁闷。最终还是完成了。自己也总结了许多上传中的错误及解决分析,都是自己自己总结的,若有什么理解错误,欢迎大家留下宝贵意见,还有很多不懂得大家...
  • java 上传文件到Linux服务器 工具类

    万次阅读 2017-06-06 10:09:35
    最近在帮同学做一个音乐推荐系统后台,需要java远程调用Linux服务器,执行深度学习算法,处理由本地上传文件。查找了相关的资料,利用ftpClient上传文件到服务器。在此贴一下这个助手类(网上很多)。 import org....
  • 文件上传下载,可解决多个安全访问问题文件上传的细节: 1. 为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如放于WEB-INF目录下。 2. 为防止文件覆盖的现象发生,要为上传文件产生一个唯一的...
  • 一、讲解Java实现ftp,需要依赖commons-net-3.3.jar包,首先下载该jar包,这东西,都给封装好,直接用就行,站在巨人的肩膀上看问题么,你也可以手写内部实现。1.ftp上传下载工具类import java.io.File; import ...
  • import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.net.SocketException;import java.sql.Connection;import java.sql.DriverManager;import...
  • 上传图片后想对文件进行查看发现一直是403错误,linux下找到上传文件的,发现其群组和其他组没有读的权限,修改一下权限则可以访问。 由此判定由权限问题导致的403错误。 导致权限不足原因 <1> tomcat版本...
  • Java实现文件的跨服务器上传

    万次阅读 2017-04-10 15:37:32
    显然,把大几百M的apk文件存数据库不现实,查了半天,在两端建立ftp服务器传文件是最快的方法。 具体流程是,用户登录外网客户端,上传文件外网的服务器硬盘上,在此同时,文件通过外网服务器访问内网管理员...
  • 近段时间java代码向服务器上传文件的代码。可是屡试不行。很是郁闷。最终还是完成了。自己也总结了许多上传中的错误及解决分析,都是自己自己总结的,若有什么理解错误,欢迎大家留下宝贵意见,还有很多不懂得大家...
  • java如何设置linux服务器文件权限

    千次阅读 2019-05-29 21:16:17
    Linux下用户组、文件权限详解: ... java代码实现文件上传到linux服务器问题汇总及解决(亲测可行) https://www.xuebuyuan.com/3243572.html 【Linux】目录文件权...
  • Java生成文件到Sftp目录中无权限问题

    千次阅读 2019-12-15 22:01:06
    java中需要生成文件到指定的sftp目录中,提供给其他的系统或者用户读取文件,但是在程序中生成的文件或者创建的目录sftp中会显示没有权限去读/写,这是因为tomcat中配置文件导致 解决方案 一、 部署在tomcat中...
  • SFTP介绍 SFTP是Secure File Transfer Protocol的...SFTP为SSH的一部份,是一种传输文件到服务器的安全方式。 依赖包 <!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> <dependency&...
  • java 上传文件/图片 linux服务器

    千次阅读 2019-11-04 16:14:05
     * Description: 向FTP服务器上传文件  *   * @param host  * FTP服务器hostname  * @param port  * FTP服务器端口  * @param username  * FTP登录账号  * @param password  * FTP登录密码  *...
  • 系统中实现上传数据报表excel,由于业务场景比较的频繁,项目应用的服务器上不对原始文件进行保存,解析完毕之后数据持久化数据库中,需要对源文件进行删除操作,当出现问题的时候,无法定位到底是程序问题,...
  • Java接口实现文件上传

    万次阅读 2019-05-09 12:51:25
    因工作需要,在后台管理页面加入一个上传文件的模块,虽然接口的代码很简单,但实现期间遇到了一些比较有趣的坑,特记录下来。 需求 实现文件上传,并提供一个可供下载的路径。 想法 文件上传代码暂且不谈,先说说...
  • Javaweb上传文件到Linux 没有读写权限

    千次阅读 2019-07-12 10:40:37
    1.javaweb程序(saas-business)部署在linux系统 tomcat服务器下,使用该程序里面上传图片功能,上传图片至linux服务器挂载盘(共享盘)中/nfs/uploads/目录下。tomcat是以root用户来运行的。 2.website,部署在另一...
  • JAVA上传文件到FTP

    千次阅读 2019-06-24 11:25:08
    需求说明:将指定文件上传到FTP,上传成功后修改文件名。 获取文件名及路径(这里是从数据库获取,所以前面的代码就不CV了) /** * 测试上传 * @param map 从数据库获取文件信息 (包含文件路径FILE_...
  • <form method="post" enctype="multipart/form-data" action="upload.do">...请选择要上传文件:</p> <p><input type="file" name="file" /></p> <p><inp...
  • 应用程序中免不了要上传下载文件,实现方式由简单复杂有很多种: 最简单的,文件上传后服务端程序将文件写服务器上一个指定的目录 稍微复杂一点,我们需要和应用服务器分开的单独文件服务器 再复杂一点,需要...
  • 领导分配了一个需求,后台上传聊天附件,小程序端浏览。但小程序无法访问上传到linux服务器中的,提示如下: ...文件权限问题,但是后续上传文件权限均是红框中的,无访问权限。后来修改当前文件夹权限也不行。...
  • 下载:获取到文件路径,通过输入流读取,在通过输出流写入文件实现下载 #文件上传大小配置 单个文件大小 总的文件大小 spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=100...
  • 本篇可以实现通过代码连接其他服务器,并可以传送文件至其他服务器中,并且路径可以自定义 注:需要有另一台服务器权限账号 连接另一台服务器的代码如下 /** * @param host * 另一台服务器地址 * @param port...
  • java上传图片或者文件到nginx服务器

    万次阅读 2018-08-21 15:01:50
    红线部分就是Nginx上的路径,注解@requiresPermissions这个是权限问题,可以去掉千万不要忘了红线部分这是上传图片.其实上传文件跟这个也是一样的,当然这里面少了一些判断,比如限制文件的大小等. 当你完成之后访问...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,610
精华内容 33,444
关键字:

java实现上传文件到服务器权限问题

java 订阅