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 ...
随机推荐
- 内核ipc机制
内核版本:linux2.6.22.6 硬件平台:JZ2440 驱动源码 block_ipc_poll_key_int_drv.c : #include <linux/module.h> # ...
- nodejs 学习二, nodejs调试
nodejs 调试,在官方文档(英文),常用的两种: 一个在chrome安装插件inspector 第二种利用编辑 这里我使用vscode编辑来调试. 主要是配置 launch.json(用vscod ...
- Log4j rootLogger配置
Log4j 根配置语法 log4j.rootLogger = [ level ] , appenderName, appenderName, … 指代 把指定级别的日志信息输出到指定的一个或者多个位置 ...
- CentOS 7 :Failed to start IPv4 firewall with iptables.
用iptables开启防火墙报错: Failed to start IPv4 firewall with iptables. 转载于:https://blog.csdn.net/ls1645/art ...
- LigerUI子父窗口之间传参问题
在父窗口自定义一个参数,该参数为一个方法,然后在子窗口使用 var dialog = frameElement.dialog; //调用页面的dialog对象(ligerui对象)该对象,取得父窗口定 ...
- eslint 代码规范
官网:https://github.com/standard/standard/blob/master/docs/RULES-zhcn.md JavaScript Standard Style Eng ...
- [py][mx]django处理登录逻辑
浏览器同源策略(same-origin policy) csrf攻击防御核心点总结 django的cookie和session操作-7天免登录 flask操作cookie&django的see ...
- 以太坊abi
什么是abi ABI是Application Binary Interface的缩写,字面意思 应用二进制接口,可以通俗的理解为合约的接口说明.当合约被编译后,那么它的abi也就确定了. 我们来看看一 ...
- (转)Geth控制台使用及Web3.js使用实战
在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3.Geth 控制台(REPL)实现了所有的web3 API及Admin API,使用好 Geth 就是必修课.结合Geth命令用法阅 ...
- Sql注入基础原理介绍
说明:文章所有内容均截选自实验楼教程[Sql注入基础原理介绍]~ 实验原理 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击, ...