- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SocketIo+SpringMvc实现文件的上传下载功能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
socketio不仅可以用来做聊天工具,也可以实现局域网(当然你如果有外网也可用外网)内实现文件的上传和下载,下面是代码的效果演示
git地址: https://github.com/fengcharly/sockeio-springmvcupload.git 。
部分代码如下
服务端的代码
chuanserver
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import
java.io.*;
import
java.net.serversocket;
import
java.net.socket;
import
java.nio.channels.filechannel;
public
class
chuanserver {
public
static
void
protserver(string po)
throws
ioexception {
int
port = integer.parseint(po);
serversocket serversocket =
new
serversocket(port);
while
(
true
) {
final
socket clientsocket = serversocket.accept();
new
thread() {
@override
public
void
run() {
try
{
bufferedreader br =
new
bufferedreader(
new
inputstreamreader(clientsocket.getinputstream(),
"gbk"
)
);
inputstream is = clientsocket.getinputstream();
printstream pr =
new
printstream(
clientsocket.getoutputstream()
);
pr.println(
"我是服务端"
);
string str = br.readline();
system.out.println(
"br.readline():"
+ str);
system.out.println(
"服务端来接收了!!"
);
out(is, str);
}
catch
(exception e) {
e.printstacktrace();
}
}
}.start();
}
}
public
static
void
out(inputstream is, string str)
throws
ioexception {
fileoutputstream fo =
new
fileoutputstream(
"c:\\users\\administrator\\desktop\\upload\\"
+ str);
bufferedinputstream bi =
new
bufferedinputstream(is);
bufferedoutputstream bo =
new
bufferedoutputstream(fo);
int
len =
0
;
while
((len=bi.read())!=-
1
){
bo.write(len);
}
bi.close();
bo.close();
}
}
|
这里我固定了上传后保存的路径为:"c:\users\administrator\desktop\upload\" 。
portcontroller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import
org.springframework.stereotype.controller;
import
org.springframework.ui.model;
import
org.springframework.web.bind.annotation.requestmapping;
import
socket.chuanserver;
import
java.io.ioexception;
@controller
public
class
portcontroller {
@requestmapping
(
"/port"
)
public
string port(string port,model model){
model.addattribute(
"port"
,port);
try
{
chuanserver.protserver(port);
}
catch
(ioexception e) {
e.printstacktrace();
}
return
"success"
;
}
}
|
再来看下上传的客户端的代码
uploadcontroller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@controller
@requestmapping
(
"/"
)
public
class
uploadcontroller {
@autowired
private
upservice upservice;
private
string zhuan=
""
;
@requestmapping
(
"/upload"
)
public
string upload(
@requestparam
(value =
"file"
, required =
false
) multipartfile file,
httpservletrequest request,
@requestparam
(
"iphost"
) string iphost,
@requestparam
(
"port"
) string port,model model)
throws
ioexception {
string filename = file.getoriginalfilename();
inputstream is = file.getinputstream();
upservice.upload(filename,is,iphost,port);
return
"success"
;
}
}
|
upserviceimpl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
@service
public
class
upserviceimpl
implements
upservice {
@override
public
void
upload(string filename, inputstream is, string iphost, string port) {
getclientsocket(is, filename, iphost, port);
}
//建立socket通信
public
void
getclientsocket(inputstream is, string filename, string iphost, string port) {
int
po = integer.parseint(port);
try
{
socket socket =
new
socket(iphost, po);
bufferedreader br =
new
bufferedreader(
new
inputstreamreader(socket.getinputstream(),
"utf-8"
)
);
printstream pr =
new
printstream(
socket.getoutputstream()
);
outputstream os = socket.getoutputstream();
system.out.println(
"客户端给你传文件了!"
);
system.out.println(
"文件名为:"
+ filename);
//读取服务器返回的消息
string str = br.readline();
system.out.println(
"服务器发来的消息为:"
+ str);
pr.println(filename);
in(is, os);
pr.close();
br.close();
system.out.println(
"客户端已关闭"
);
}
catch
(exception e) {
e.printstacktrace();
}
}
//上传文本
public
static
void
in(inputstream is, outputstream os)
throws
ioexception {
//bio
bufferedinputstream bi =
new
bufferedinputstream(is);
bufferedoutputstream bo =
new
bufferedoutputstream(os);
int
len =
0
;
while
((len=bi.read())!=-
1
){
bo.write(len);
system.out.println(len);
}
bi.close();
bo.close();
}
}
|
这里相应的访问路径为
服务端: http://localhost:8080/ 。
客户端: http://localhost:8082/upload 。
完整项目git地址
注意: https://github.com/fengcharly/sockeio-springmvcupload.git 。
传输过程中的我们用的是系统提供的bufferedinputstream和bufferedoutputstream缓冲流来传输文件,相对而言传输小文件比较合适,大文件比较慢,可以进一步优化,传输过程中传输速度如下
总结 。
以上所述是小编给大家介绍的socketio+springmvc实现文件的上传下载功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
原文链接:https://www.cnblogs.com/charlypage/p/9440226.html 。
最后此篇关于SocketIo+SpringMvc实现文件的上传下载功能的文章就讲到这里了,如果你想了解更多关于SocketIo+SpringMvc实现文件的上传下载功能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在选择一个 python 库来编写一个嵌入我网站的实时聊天功能页面。 我找到了两个基于 Socket.IO 的库,python-socketio 和 gevent-socketio: 来自 pyt
我正在使用 socketio 和 netty 以及 java,我对它们都是新手。 我的客户端代码如下所示。 webSocket test
我正在尝试在外部值发生变化时发送广播。 Camonitor 在值改变时调用回调,我想通知所有连接的客户端值已经改变,他们需要刷新。 from flask import Flask from epics
我在使用 flasks socketio 时遇到了问题,似乎当我调用 socketio.emit('my event', 'my message') 时它根本不会发出任何事件。 .. 所以这是我的设置
我有一个 socketio 服务器/客户端可以很好地协同工作,但是我想开始为服务器在页面加载或正常运行期间脱机时编写事件。 我在我的头文件中包含了远程 socket.io 代码: /socket.io
我正在使用 flask-socketio 和 python-socketio 开发一个项目。为了确保通信安全,系统需要使用 SSL 进行升级。我正在使用 Mac 和 Python 3.7。 我使用 o
我目前正在尝试了解套接字的工作原理。我正在使用 Flask-socketio 和 python socketio 客户端并运行一个基本示例。这是我到目前为止所做的 应用.py from flask i
我正在尝试使用 Socket.IO 开发一个聊天应用程序。我的服务器端是安装了 express + socket.io 库的 Node.js,我的客户端是 Android + Web。 我尝试在我的客
我正在构建一个 Android 聊天应用程序。我在服务器端使用 nodejs 并尝试实现 android client for socketIO.我收到 SocketIO 异常。代码有什么问题? 服务
我将 Flask 与 gevent-socketio 一起使用: $ cat requirements.txt Flask==0.10.1 Jinja2==2.7.1 MarkupSafe==0.18
我正在为某个项目使用 netty-socketio。我像这样设置了一个服务器: Configuration config = new Configuration(); config.setHostna
所以,我需要收集很多数据,比如每秒 3 个单位的数据,由很多人收集。我将收集此数据的事件命名为“捕获”。 我正在使用 JWT 对其他数据密集度较低的事件进行身份验证。 现在,我只是担心使用每个数据密集
socketio不仅可以用来做聊天工具,也可以实现局域网(当然你如果有外网也可用外网)内实现文件的上传和下载,下面是代码的效果演示: git地址: https://github.com/fen
我正在使用 flask-socketio 创建一个聊天应用程序,现在我想在客户端断开连接时使用客户端的用户名向服务器发送一条消息,即当客户端关闭浏览器/选项卡时,以便我可以将该消息从服务器发送到所有现
我正在尝试向从单独文件连接的所有套接字发出。但是我似乎无法弄清楚。 Socket.js var socketio = require('socket.io'); var users = require
我尝试在我的 django 应用程序中实现与 django-socketio 的聊天。 首先要了解django-socketio,所以看了https://github.com/stephenmcd/d
我对网络编程有点陌生。我现在正在尝试编写一个服务器。在服务器端我有一个方法: socket.on("joinserver", function(name, device) { }); 在客户端,
我正在尝试将数据从客户端发送到服务器端。我只得到未定义。我希望用户单击 ledOn 函数来发送 1 ,并单击 ledOff 来发送 0 到服务器。 server.js io.sockets.on('c
我使用nodejs设置了一个简单的Socket服务器gameIo gameIo.on("connection", socket => { socket.on("sign up", () => {
我想知道是否有一种方法可以在两个(或多个)flask-socketio 服务器之间直接通信。我想在服务器之间传递信息,并让客户端连接单个 Web 套接字服务器,该服务器将具有来自其他服务器的所有组合逻
我是一名优秀的程序员,十分优秀!