TCP客户端图片上传服务端保存本地示例
//TCP客户端
public class TCPClient { public static void main(String[] args)throws IOException {
Socket socket = new Socket("127.0.0.1",8888);
OutputStream out = socket.getOutputStream();
FileInputStream fis = new FileInputStream("d:\\jay.jpg");
byte[] data = new byte[1024];
int len = 0;
while((len = fis.read(data)) != -1){
out.write(data,0,len);
} //给服务器写终止序列
socket.shutdownOutput(); //得到的回应
InputStream in = socket.getInputStream();
len = in.read(data);
System.out.println(new String(data,0,len)); //关闭资源
fis.close();
socket.close();
} }
TCP服务端:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random; public class TCPServer { public static void main(String[] args) throws IOException{
ServerSocket server = new ServerSocket(8888);
Socket socket = server.accept();
//处理客户端传来的文件流
InputStream in = socket.getInputStream();
File upload = new File("d:\\upload");
if(!upload.exists()){
upload.mkdir();
}
String filename = "taobao" + System.currentTimeMillis() + new Random().nextInt(999999) +".jpg";
FileOutputStream fos = new FileOutputStream(upload+File.separator+filename);
int len = 0;
byte[] data = new byte[1024];
while((len = in.read(data)) != -1){
fos.write(data,0,len);
} //回复客户端
socket.getOutputStream().write("上传成功!".getBytes()); //关闭流资源
fos.close();
socket.close();
server.close();
} }
进阶:(多线程图片上传服务)
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class TCPThreadServer { public static void main(String[] args) throws IOException{
ServerSocket server = new ServerSocket(8888);
while(true){
//获取到一个客户端,必须开启新线程
Socket socket = server.accept();
new Thread(new Upload(socket)).start();
}
} }
TCP服务端代码封装到 run 方法中
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random; public class Upload implements Runnable{
private static Socket socket; public Upload(Socket socket){
this.socket = socket;
} public void run(){
try{
//处理客户端传来的文件流
InputStream in = socket.getInputStream();
File upload = new File("d:\\upload");
if(!upload.exists()){
upload.mkdir();
}
String filename = "itcast" + System.currentTimeMillis() + new Random().nextInt(999999) +".jpg";
FileOutputStream fos = new FileOutputStream(upload+File.separator+filename);
int len = 0;
byte[] data = new byte[1024];
while((len = in.read(data)) != -1){
fos.write(data,0,len);
} //回复客户端
socket.getOutputStream().write("上传成功!".getBytes()); //关闭流资源
fos.close();
socket.close();
}catch(Exception ex){} }
}
TCP客户端图片上传服务端保存本地示例的更多相关文章
- 微信小程序开发之多图片上传+服务端接收
前言: 业务需求,这次需要做一个小程序同时选中三张图片一起上传到服务端,后端使用的.NET WEBAPI接收数据保存. 使用技术: 在这章中将会使用到微信小程序wx.uploadFile(Object ...
- [转]微信小程序开发(二)图片上传+服务端接收
本文转自:http://blog.csdn.net/sk719887916/article/details/54312573 文/YXJ 地址:http://blog.csdn.net/sk71988 ...
- 微信小程序---图片上传+服务端接受
原文地址:http://blog.csdn.net/sk719887916/article/details/54312573 微信小程序,图片上传,应用地方-修改用户信息的头像. 详细代码: 小程序的 ...
- C# winform 窗体应用程序之图片上传Oracle数据库保存字段BLOB
C# winform 窗体应用程序之图片上传Oracle数据库保存字段BLOB 我用的数据库是Oracle,就目前来看,许多数据库现在都倾向于Oracle数据库,对ORACLE数据库基本的操作也是必须 ...
- 在ASP.NET MVC下实现单个图片上传, 客户端服务端双重限制图片大小和格式, 服务端裁剪图片
在"MVC文件图片ajax上传轻量级解决方案,使用客户端JSAjaxFileUploader插件01-单文件上传"一文中,使用JSAjaxFileUploader这款插件实现了单文 ...
- PHP 文件上传服务端及客户端配置参数说明
文件上传服务器端配置: ·file_uploads = On, 支持HTTP上传 ·upload_tmp_dir = , 临时文件保存的目录 ·upload_max_filesize=2M, 允许上传 ...
- 用Web Service实现客户端图片上传到网站
由于项目需要,通过本地客户端,把图片上传到网站.通过webservice. 这是客户端代码: private void btnimg_Click(object sender, EventArgs e) ...
- ssm框架实现图片上传显示并保存地址到数据库
本案例是通过springmvc+spring+mybatis框架以商品上传为例,实现的图片上传功能,并把图片的地址保存到数据库并在前台显示上传的图片. 本项目是使用maven搭建的项目,首先看下项目结 ...
- thinkphp微信开发之jssdk图片上传并下载到本地服务器
public function test2(){ $Weixin = new \Weixin\Controller\BaseController(); $this->assign('signPa ...
随机推荐
- opencv车流量统计算法
#include "cv.h" #include <cxcore.h> #include <highgui.h> #include <cvaux.h& ...
- 27-4-DMA2D图形加速器
在实际使用 LTDC 控制器控制液晶屏时,使 LTDC 正常工作后,往配置好的显存地址写入要显示的像素数据, LTDC 就会把这些数据从显存搬运到液晶面板进行显示,而显示数据的容量非常大,所以我们希望 ...
- linux 查看网卡流量:nload
nload命令用于查看网卡流量,用法如下: [root@mysql test]# yum install -y epel-release [root@mysql test]# yum install ...
- WebStrom2018注册码
2RRJMBXW33-eyJsaWNlbnNlSWQiOiIyUlJKTUJYVzMzIiwibGljZW5zZWVOYW1lIjoi5b285bK4IHNvZnR3YXJlMiIsImFzc2lnb ...
- 遇到Visual Studio "当前不会命中断点.还没有为该文档加载任何符号"的情况
一.问题及原因 有这样一种调用逻辑:A.exe调用B.dll.现在想要在B的源代码中打断点,从A发起进行调试,却给出了"当前不会命中断点.还没有为该文档加载任何符号"的提示.感觉十 ...
- ELKStack的基础入门和中文指南
一.ELKStack的中文指南 redhat系列配置repo源 rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch vi / ...
- Linux下Nginx安装
前提: 1.需要gcc环境:yum install gcc-c++ 2.需要第三方开发包: PCRE.zlib.openssl yum install -y pcre pcre-devel yum i ...
- $router.query和$router.params的区别
类型于get(query) 和 post(params) 1.query方式传参和接收参数 传参: this.$router.push({ path:"/xxx" query: ...
- 《全栈性能Jmeter》-3JMeter体系结构
- Keras学习率调整
Keras提供两种学习率适应方法,可通过回调函数实现. 1. LearningRateScheduler keras.callbacks.LearningRateScheduler(schedule) ...