java上传图片到另一台服务器上,如何解决

本文介绍了如何使用jcifs-1.1.11.jar实现在远程服务器上创建文件夹并上传图片的过程,包括图片重命名及路径处理等关键步骤。
需求:
项目部署于A服务器上,访问upload.jsp,上传图片.jpg。。。。。
后台接收处理,将图片存放于B服务器上。图片存放位置是根据程序不定的存放于不同的自动生成的文件夹

目前困惑:怎么获取到远程服务器地址,使之成为我图片上传的路径

现在的思路,有人介绍用jcifs-1.1.11.jar,这个可以在远程服务器上创建文件夹
实现代码:
Java code
?
1
2
3
4
5
6
7
try {
     SmbFile smbFile2= new  SmbFile( "smb://administrator:mypupa95@10.2.0.95/e$/bb" );
     smbFile2.mkdirs();
         in.close();
      } catch (Exception e){
         e.printStackTrace();
      }

以前用的上传代码是这样的:
Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  public  String upload(String dir, FormFile formFile)  throws  Exception {
          Date date =  new  Date();
         //取欲上传的文件的名字和长度
         String fname = formFile.getFileName();
         //将上传时间加入文件名
         int  i = fname.indexOf( "." );
         String name = String.valueOf(date.getTime());
         String type = fname.substring(i +  1 );
         fname = name +  "."  + type;
         InputStream in = formFile.getInputStream();     //获得上传文件的InputStream
         File uploadFile =  new  File(dir);    //创建把上传数据写到目标文件的对象
         if  (!uploadFile.exists() || uploadFile ==  null ) {   //判断指定路径是否存在,不存在则创建路径
             uploadFile.mkdirs();
         }
         String path = uploadFile.getPath() +  "/"  + fname;
         FileOutputStream fout =  new  FileOutputStream(path);
         System.out.println( "fout:" +fout);
         byte  buffer[] =  new  byte [ 8192 ];
         int  count =  0 ;
         //开始向上传路径中刚建立的文件写入数据,每次写8K字节
         while ((count = in.read(buffer)) >  0 ){
             fout.write(buffer,  0 , count);
         }
         in.close();
         fout.close();
         formFile.destroy();     //上传成功后销毁当前上传文件的资源
         return  fname;    //返回图片名称
     }


Java中实现数据库自动备份并将其传输到另一台服务器,可以按照以下步骤进行: 1. **数据库备份**: - 使用数据库提供的命令行工具进行备份。例如,MySQL可以使用`mysqldump`工具。 2. **文件传输**: - 使用Java的`java.nio`包或第三方库如`Apache Commons Net`来实现FTP或SCP文件传输。 3. **定时任务**: - 使用操作系统的定时任务(如Linux的`cron`)或Java的`ScheduledExecutorService`来定时执行备份和传输任务。 以下是一个简单的示例代码,展示了如何使用Java实现MySQL数据库的自动备份并通过FTP传输到另一台服务器: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class DatabaseBackup { public static void main(String[] args) { ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); scheduler.scheduleAtFixedRate(new BackupTask(), 0, 24, TimeUnit.HOURS); } static class BackupTask implements Runnable { @Override public void run() { try { // 数据库备份 ProcessBuilder builder = new ProcessBuilder( "mysqldump", "-u", "username", "-p", "password", "databaseName"); Process process = builder.start(); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); FileOutputStream fos = new FileOutputStream("backup.sql"); String line; while ((line = reader.readLine()) != null) { fos.write(line.getBytes()); } fos.close(); // 文件传输 FTPClient ftpClient = new FTPClient(); ftpClient.connect("ftp.server.com"); ftpClient.login("ftpUser", "ftpPassword"); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); File localFile = new File("backup.sql"); FileInputStream inputStream = new FileInputStream(localFile); ftpClient.storeFile("backup.sql", inputStream); inputStream.close(); ftpClient.logout(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } } ``` ### 说明: 1. **数据库备份**: - 使用`ProcessBuilder`调用`mysqldump`命令进行数据库备份。 - 将备份文件写入到本地文件系统。 2. **文件传输**: - 使用`FTPClient`连接到FTP服务器并登录。 - 将备份文件上传服务器。 3. **定时任务**: - 使用`ScheduledExecutorService`每天执行一次备份和传输任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值