本地上传图片到服务器上工具类

1、工具jar包依赖

<dependency>
<groupId>jcifs</groupId>
<artifactId>jcifs</artifactId>
<version>1.3.17</version>
</dependency>

2、代码如下

package com.zbb.util;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.UnknownHostException;

import org.springframework.web.multipart.MultipartFile;

import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileOutputStream;

/**
* 通过SMB协议发送文件到远程服务器
*
*/
public class SMBUtil {

private String url = "";
private SmbFile smbFile = null;
private SmbFileOutputStream smbOut = null;
private static SMBUtil smb = null;

/**
* 得到SMB和连接的方法
* @param url
* @return
*/
public static synchronized SMBUtil getInstance(String url) {
if(smb == null)
return new SMBUtil(url);
return smb;
}

private SMBUtil(String url) {
this.url = url;
this.init();
}

public void init() {
try {
System.out.println("connecting...url:" + this.url);
smbFile = new SmbFile(this.url);
if(!smbFile.exists()){
smbFile.mkdirs();
}
smbFile.connect();
System.out.println("connect successfu...url:" + this.url);
}catch (MalformedURLException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}

/**
* 上传文件到服务器
* @param file
* @return
*/
public int uploadFile(File file) {
int flag = -1;
BufferedInputStream bf = null;
try{
this.smbOut = new SmbFileOutputStream(this.url + "/" + file.getName(), false);
bf = new BufferedInputStream(new FileInputStream(file));
byte[] bt = new byte[8192];
int n = bf.read(bt);
while (n != -1){
this.smbOut.write(bt, 0, n);
this.smbOut.flush();
n = bf.read(bt);
}
flag = 0;
System.out.println("file transmission complete...");
}catch(SmbException e) {
e.printStackTrace();
}catch(MalformedURLException e) {
e.printStackTrace();
}catch(UnknownHostException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}finally{
try {
if(null != this.smbOut)
this.smbOut.close();
if(null != bf)
bf.close();
}catch(Exception e2) {
e2.printStackTrace();
}
}
return flag;
}

/**
* 上传文件到服务器
* @param file
* @return
*/
public int uploadFile(MultipartFile file,String fileName) {
int flag = -1;
BufferedInputStream bf = null;
try{
this.smbOut = new SmbFileOutputStream(this.url + "/" + fileName, false);
bf = new BufferedInputStream(file.getInputStream());
byte[] bt = new byte[8192];
int n = bf.read(bt);
while (n != -1){
this.smbOut.write(bt, 0, n);
this.smbOut.flush();
n = bf.read(bt);
}
flag = 0;
System.out.println("file transmission complete...");
}catch(SmbException e) {
e.printStackTrace();
}catch(MalformedURLException e) {
e.printStackTrace();
}catch(UnknownHostException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}finally{
try {
if(null != this.smbOut)
this.smbOut.close();
if(null != bf)
bf.close();
}catch(Exception e2) {
e2.printStackTrace();
}
}
return flag;
}

public static void main(String[] args) {
SMBUtil smb = SMBUtil.getInstance("smb://用户名:密码@服务器IP/COMMODITY");
File file = new File("E://服务器信dd息.txt");
smb.uploadFile(file);//上传文件
}
}

3、配置信息

user_name=administrator
user_pwd=akjq55**+6
user_ip=23.234.5.146
pan=d
folder=yhyhImageAddress

时间: 2024-09-28 22:46:04

本地上传图片到服务器上工具类的相关文章

使用UIWebView加载本地或远程服务器上的网页

大家都知道,使用UIWebView加载本地或远程服务器上的网页,sdk提供了三个加载接口: - (void)loadRequest:(NSURLRequest *)request; - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL; - (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)

PHP CURL本地可以采集服务器上不能采集解决办法

PHP CURL本地可以采集服务器上不能采集解决办法,今天采集一个站,在本机上写好代码,发到网站服务器上确采集不到数据.这里分析,会不会是目标站对网站做了防采集. 网上搜了下解决办法,这里用PHP CURL伪造IP和来源测试看看.代码如下. //随机IP function Rand_IP(){ $ip2id= round(rand(600000, 2550000) / 10000); //第一种方法,直接生成 $ip3id= round(rand(600000, 2550000) / 10000

智能机器人“小昆”的实现(二)获取服务器数据工具类的编写及测试

没有取得图灵机器人认证的朋友可以看上一篇,点击下面的地址即可: http://www.cnblogs.com/fuly550871915/p/4852148.html 已经取得认证的朋友,可以继续往下做了.下面就开始我们的实际代码编写.在这篇文章中,我们要实现通过调用图灵机器人API获取返回的数据的功能.而且搭建相应的测试环境,看看我们这个功能实现的到底正确不正确. 一.获得服务器返回数据的工具类的实现 主要是android中的简单的网络编程知识的运用.代码如下: 1 package com.f

本地远程连接服务器上的Jupyter Notebook设置方法

完整原文:https://hongwan.xyz/archives/ 使用Jupyter可以在本地电脑直接新建和编辑linux服务器的代码,比如python和R,非常方便: 本机为:Win10 服务器:CentOS Linux release 7.3.1611 1.远程服务器安装Jupyter 本人之前安装Anaconda自带了jupyter notebook,因此可以直接使用.如果没有,可通过以下命令安装: pip install jupyter notebook 2.服务器端Jupyter配

CACTI :使用模板监控本地或其他服务器上的mysql

mysql 的模板,网上都在使用的这个地址http://mysql-cacti-templates.googlecode.com 已经访问不到了 Google找到这个网址: 介绍骗: http://www.percona.com/doc/percona-monitoring-plugins/1.0/cacti/mysql-templates.html 下载页:http://www.percona.com/downloads/percona-monitoring-plugins/ 为了方便大家下载

Jenkins构建本地项目到服务器上自动部署的方法

最近在用Jenkins做项目的自动部署,由于项目需求,现在要在本地构建后再放到Tomcat里.以下是本地构建步骤: 名称填写好,下面的选项是可选的. 源码管理这里选择none. 触发器这里,我的是在凌晨3点强制构建.可选. 这里是最重要的一步:选择Execute shell选项.可以使Jenkins执行一些shell命令. 点击之后会出现这个界面,在Command输入框里输入要执行的shell命令. 我指向的是/home/data/crm这个目录下,然后让其执行mvn打包指令. 在Build里输

GIT用服务器上的版本强制覆盖掉本地的版本(转)

以前在机子上使用git下载了linux git版本库上的源代码,由于在阅读源代码的过程中,难免会对本地的文件进行修改,这样就导致本地文件与服务器上的文件版本不一致,我想做的就是用服务器上的版本强制覆盖掉本地的版本: 我得到的错误消息如下: 从图中可以看到,git fetch和git pull的区别, git fetch 不会自动的将结果merge到本地,只是将远程版本同步到本地版本库,而不会merge到本地副本. git pull  将会直接把working directory中的内容覆盖掉.

用git上传本地项目到github上

首先确认自己已经安装了git,打开git bash,输入ssh-keygen -t rsa -C "自己的邮箱地址@XXX.com" ,生成自己的公钥与私钥   一路默认回车,会生成公钥.私钥到以下文件夹下id_rsa是私钥,id_rsa.pub是公钥,打开公钥等下要用到   浏览器进入自己的github,打开设置,进入ssh and GPG keys   点击NEW ssh key,自己填个标题,下面内容复制前面打开的公钥,最后添加   可以用ssh -T [email protec

java连接FTP、删除、下载文件的工具类

目前例举了二个连接FTP的方法,可以下载删除FTP上的文件,代码目前有点凌乱,以后再优化 import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStr