关闭

Java实现图片上传

标签: Java实现图片上传
2141人阅读 评论(0) 收藏 举报
分类:
import java.io.*;
import java.net.*;
/*
*发送端
*/
class  picsend
{
	public static void main(String[] args) throws Exception
	{
		if(args.length!=1)
		{
			System.out.println("请选择一张.jpg图片");
			return;
		}
		File file = new File(args[0]);
		if (!(file.exists() && file.isFile()))
		{
			System.out.println("图片有问题(不是文件或不存在)");
			return;
		}
		if(!file.getName().endsWith(".jpg"))
		{
			System.out.println("图片格式不对,请重新选择图片");
			return;
		}
		if(file.length()>1024*1024*10)
		{
			System.out.println("图片过大,无法上传");
			return;
		}

		Socket s = new Socket("192.168.33.1",10006);//建立服务
		FileInputStream fis = new FileInputStream("d:\\美女.jpg");//读取图片
		OutputStream out = s.getOutputStream();//读到的写入
		byte [] b = new byte[1024];
		int len = 0;
		while((len = fis.read(b))!= -1)
		{
			out.write(b,0,len);
		}
		s.shutdownOutput();//标记结束
		InputStream in = s.getInputStream();//读服务端返回数据
		byte [] bin = new byte[1024];
		int num = in.read(bin);
		System.out.println(new String(bin,0,num));
		fis.close();
		s.close();
	}
}
class picThread implements Runnable 
{
	private Socket s;
	picThread(Socket s)
	{
		this.s = s;
	}
	public void run()
	{
		int count = 1;
		String ip = s.getInetAddress().getHostAddress();//得到ip
		try
		{
			System.out.println(ip+".............connect");
			InputStream in = s.getInputStream();//读到流中数据
			File file = new File(ip+"("+(count)+")"+".jpg");
			while(file.exists())//判断文件是否存在
				file = new File(ip+"("+(count++)+")"+".jpg");

			FileOutputStream fos = new FileOutputStream(file);//写入
			byte [] b = new byte[1024];
			int len = 0;
			while((len = in.read(b))!=-1)
			{
				fos.write(b,0,len);
			}
			OutputStream out = s.getOutputStream();//写入服务端传过来数据
			out.write("上传成功!".getBytes());
			fos.close();
			s.close();
		}
		catch (Exception e)
		{
			throw new RuntimeException("上传失败");
		}
			
	}
}
/*
*服务端
*/
class  picrece 
{
	public static void main(String[] args) throws Exception
	{
		ServerSocket ss = new ServerSocket(10006);
		while(true)
		{
			Socket s = ss.accept();//接收
			new Thread(new picThread(s)).start();
		}
	}
}


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:812205次
    • 积分:9786
    • 等级:
    • 排名:第2029名
    • 原创:264篇
    • 转载:54篇
    • 译文:2篇
    • 评论:127条
    博客专栏
    文章分类
    最新评论