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 ...
随机推荐
- 使用github的srs代码,搭建 RTMP_Server
1. 搭建RTMP服务器 1> 获取开源代码SRS. git clone https://github.com/ossrs/srs 下载源码后,按照如下文档安装https://github.co ...
- ZedBoard上运行linux系统的准备工作框架
目标:ZedBoard上运行linux系统. 需要什么:图中上色部分. 应该做哪些工作:上色部分之前的所有步骤. 由上图得知,为了顺利在zedboard上构建嵌入式Linux操作系统,我们一般需要如下 ...
- 前端 HTML body标签相关内容 常用标签 表格标签 table
表格标签 table 表格由<table> 标签来定义.每个表格均有若干行(由 <tr> 标签定义),每行被分割为若干单元格(由<td>标签定义).字母 td 指表 ...
- laravel用crud修改产品items-新建resource controller和routing
前面我们创建了laravel简单的items产品api,但是需要在数据库添加,如何在网页上直接添加呢?我们可以用view来操作crud(增加Create.读取查询Retrieve.更新Update和删 ...
- Magento2与Magento1的区别有哪些
magento2是15年正式上线的正式版,框架和写法跟magento1有很大区别,用到了命名空间和composer,模块化设计更强.因为是刚出生不久 所以bug比较多.目前全世界做magento2的公 ...
- C#实体对象出现中文处理乱码的问题
问题: C#实体对象使用时,对于是中文的增加时,到数据库后变成了?? 解决方法: 增加实体对象时“新建连接”操作中的高级中要设置属性Character Set=urf8 (要手动输入)
- 20190316 Python - Pandas
1. python 安装3.7版本 2. 第三方包进行数据加工和呈现 需要注意的是,你安装过程中会有很多依赖包问题,如果网络异常,那么就使用https://pypi.org/ 地址去找对应的包下载 ...
- golang 的 buffered channel 及 unbuffered channel
The channel is divided into two categories: unbuffered and buffered. (1) Unbuffered channelFor unbuf ...
- zabbix 配合钉钉群机器人(webhook) 报警
首先建钉钉群,添加一个自定义机器人拿到webhook zabbix添加一个报警媒介 搞一个shell脚本来启动Python脚本(直接用zabbix调Python脚本不行,不知道什么原因) vim di ...
- 二叉树df
二叉树 最有搜索算法 打印偶节点 不要用递归