Java实现图片上传

简介:
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();
		}
	}
}


目录
相关文章
|
2月前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
74 4
|
2月前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
61 2
|
2月前
|
算法 Java Linux
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
这篇文章介绍了如何使用Java的Graphics2D类在图片上合成另一个照片,并将照片切割成圆形头像的方法。
50 1
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
|
6月前
|
数据可视化 Java
Java语言使用DL4J实现图片分类
【6月更文挑战第14天】Java语言使用DL4J实现图片分类
112 3
|
2月前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
|
2月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
21 1
|
2月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
67 1
|
2月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
111 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
3月前
|
Java
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
这篇文章介绍了Java中FileInputStream和FileOutputStream的使用,包括如何读取和写入txt文件以及如何拷贝图片文件。
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
|
3月前
|
存储 缓存 监控
Java——图片文件位于 bin 目录下,下载新图片会导致应用程序重启
【9月更文挑战第22天】在Java应用中,若图片位于bin目录下且下载新图片导致应用重启,可能是因为部署方式不当或资源监控机制过于敏感。解决方法包括:更改图片存储位置至独立目录;配置应用服务器减少资源监控敏感度;使用独立资源服务器托管静态资源;优化代码减少资源重复加载。具体方案需根据应用实际情况和技术栈调整。