java 如何只通过后台把本地的图片上传的服务器上去?
这里你弄错了一个问题;\x0d\你的程序是要传递的二进制数据\x0d\而不是传递路径,然后再到服务器读取文件数据(你的服务器有这个文件)\x0d\只有当你的服务器下有这个文件了,你传递一个路径,读取是可以的\x0d\//---\x0d\关于如何上传文件, 自己google一下,很多教程
需要这样的一个包 jcifs-1111
public static void forcdt(String dir){
InputStream in = null;
OutputStream out = null;
File localFile = new File(dir);
try{
//创建file类 传入本地文件路径
//获得本地文件的名字
String fileName = localFilegetName();
//将本地文件的名字和远程目录的名字拼接在一起
//确保上传后的文件于本地文件名字相同
SmbFile remoteFile = new SmbFile("smb://administrator:admin@10001/e$/aa/");
//创建读取缓冲流把本地的文件与程序连接在一起
in = new BufferedInputStream(new FileInputStream(localFile));
//创建一个写出缓冲流(注意jcifs-1315jar包 类名为Smb开头的类为控制远程共享计算机"io"包)
//将远程的文件路径传入SmbFileOutputStream中 并用 缓冲流套接
out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile+"/"+fileName));
//创建中转字节数组
byte[] buffer = new byte[1024];
while(inread(buffer)!=-1){//in对象的read方法返回-1为 文件以读取完毕
outwrite(buffer);
buffer = new byte[1024];
}
}catch(Exception e){
eprintStackTrace();
}finally{
try{
//注意用完操作io对象的方法后关闭这些资源,走则 造成文件上传失败等问题。!
outclose();
inclose();
}catch(Exception e){
eprintStackTrace();}
}
}
public class SocketTest extends Thread {
private Socket so;
private DataInputStream in;
public static void main(String[] args) {
SocketTest app = new SocketTest();
appstartup();
}
public void startup() {
try {
// 创建服务端socket对象并指定监听端口
ServerSocket ss = new ServerSocket(9999);
Systemoutprintln("listening");
// 等待客户端连接
so = ssaccept();
Systemoutprintln("connected");
// 开始读取数据
start();
} catch (Exception e) {
eprintStackTrace();
}
}
public void run() {
try {
// 创建socket输入流
in = new DataInputStream(sogetInputStream());
while (true) {
try {
// 定义接收缓冲区(64字节)
byte[] buf = new byte[64];
// 将数据读到接收缓冲区中,并返回实际读到的数据长度
int len = inread(buf, 0, 64);
// 长度为-1说明到达输入流末尾,socket已关闭
if (len < 1) {
Systemoutprintln("closed");
break;
}
Systemoutprintln("(" + len + ")");
} catch (Exception e) {
// 读数据异常
eprintStackTrace();
}
}
} catch (Exception e) {
// 监听异常
eprintStackTrace();
}
}
}
0条评论