Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
device-back
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
device-back
Commits
4d8b89f5
提交
4d8b89f5
authored
12月 05, 2020
作者:
133
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[用户] [清退] [专管员统计] 代码提交
上级
9276e8c2
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
237 行增加
和
30 行删除
+237
-30
BlockchaController.java
.../com/tykj/dev/blockcha/controller/BlockchaController.java
+15
-15
BlockChainUtil.java
...com/tykj/dev/blockcha/subject/service/BlockChainUtil.java
+20
-2
BlockChainUtilImpl.java
...dev/blockcha/subject/service/impl/BlockChainUtilImpl.java
+171
-9
SystemLog.java
...ig/src/main/java/com/tykj/dev/config/domin/SystemLog.java
+27
-0
Swagger2Config.java
...main/java/com/tykj/dev/config/swagger/Swagger2Config.java
+1
-1
FileController.java
...a/com/tykj/dev/device/file/Controller/FileController.java
+2
-2
UseReportFIleServiceImpl.java
...ev/device/file/service/Impl/UseReportFIleServiceImpl.java
+1
-1
没有找到文件。
dev-blockcha/src/main/java/com/tykj/dev/blockcha/controller/BlockchaController.java
浏览文件 @
4d8b89f5
...
@@ -57,33 +57,33 @@ public class BlockchaController {
...
@@ -57,33 +57,33 @@ public class BlockchaController {
}
}
@ApiOperation
(
value
=
"添加"
)
@ApiOperation
(
value
=
"添加"
)
@GetMapping
(
value
=
"/sendHash/{code}/{content}"
)
@GetMapping
(
value
=
"/sendHash/{
index}/{
code}/{content}"
)
public
ResponseEntity
sendHash
(
@PathVariable
Integer
code
,
@PathVariable
String
content
){
public
ResponseEntity
sendHash
(
@PathVariable
Integer
index
,
@PathVariable
Integer
code
,
@PathVariable
String
content
){
// content= HexUtil.string2HexUTF8(content);
// content= HexUtil.string2HexUTF8(content);
return
ResponseEntity
.
ok
(
blockChainUtil
.
sendHash
(
code
,
"8a4df5a249be4b3890eeea22bd238feb"
));
return
ResponseEntity
.
ok
(
blockChainUtil
.
sendHash
(
index
,
code
,
"8a4df5a249be4b3890eeea22bd238feb"
));
}
}
@ApiOperation
(
value
=
"文本添加"
)
@ApiOperation
(
value
=
"文本添加"
)
@GetMapping
(
value
=
"/sendHash1/{code}/{content}"
)
@GetMapping
(
value
=
"/sendHash1/{
index}/{
code}/{content}"
)
public
ResponseEntity
sendHash1
(
@PathVariable
Integer
code
,
@PathVariable
String
content
){
public
ResponseEntity
sendHash1
(
@PathVariable
Integer
index
,
@PathVariable
Integer
code
,
@PathVariable
String
content
){
// content= HexUtil.string2HexUTF8(content);
// content= HexUtil.string2HexUTF8(content);
return
ResponseEntity
.
ok
(
blockChainUtil
.
sendText
(
code
,
content
));
return
ResponseEntity
.
ok
(
blockChainUtil
.
sendText
(
index
,
code
,
content
));
}
}
@ApiOperation
(
value
=
"文本最佳添加"
)
@ApiOperation
(
value
=
"文本最佳添加"
)
@GetMapping
(
value
=
"/sendHash2/{id}/{content}"
)
@GetMapping
(
value
=
"/sendHash2/{i
ndex}/{i
d}/{content}"
)
public
ResponseEntity
sendHash2
(
@PathVariable
String
id
,
@PathVariable
String
content
){
public
ResponseEntity
sendHash2
(
@PathVariable
Integer
index
,
@PathVariable
String
id
,
@PathVariable
String
content
){
// content= HexUtil.string2HexUTF8(content);
// content= HexUtil.string2HexUTF8(content);
return
ResponseEntity
.
ok
(
blockChainUtil
.
appendText
(
content
,
id
));
return
ResponseEntity
.
ok
(
blockChainUtil
.
appendText
(
index
,
content
,
id
));
}
}
@ApiOperation
(
value
=
"文本篡改验证"
)
//
@ApiOperation(value = "文本篡改验证")
@GetMapping
(
value
=
"/sendHash3/{id}/{content
}"
)
// @GetMapping(value = "/sendHash3/{key}/{id
}")
public
ResponseEntity
sendHash3
(
@PathVariable
String
id
,
@PathVariable
String
content
){
// public ResponseEntity sendHash3(@PathVariable String key,
@PathVariable String id,@PathVariable String content){
// content= HexUtil.string2HexUTF8(content);
//
//
content= HexUtil.string2HexUTF8(content);
return
ResponseEntity
.
ok
(
blockChainUtil
.
verifyText
(
content
,
id
));
// return ResponseEntity.ok(blockChainUtil.verifyText(index,
content,id));
}
//
}
@GetMapping
(
value
=
"/fetchRecord/{id}"
)
@GetMapping
(
value
=
"/fetchRecord/{id}"
)
...
...
dev-blockcha/src/main/java/com/tykj/dev/blockcha/subject/service/BlockChainUtil.java
浏览文件 @
4d8b89f5
...
@@ -37,8 +37,17 @@ public interface BlockChainUtil {
...
@@ -37,8 +37,17 @@ public interface BlockChainUtil {
* @param content 文本 200k以内
* @param content 文本 200k以内
* @return bt
* @return bt
*/
*/
BcText
sendText
(
Integer
index
,
Integer
subCode
,
String
content
);
/**
* 文本上链
* @param subCode
* @param content
* @return
*/
BcText
sendText
(
Integer
subCode
,
String
content
);
BcText
sendText
(
Integer
subCode
,
String
content
);
/**
/**
* hash 上链
* hash 上链
*
*
...
@@ -46,7 +55,7 @@ public interface BlockChainUtil {
...
@@ -46,7 +55,7 @@ public interface BlockChainUtil {
* @param content 内容哈希,256bits hex编码。 方法可参考本模块HexUtil,方法内已转换,直接传入内容即可
* @param content 内容哈希,256bits hex编码。 方法可参考本模块HexUtil,方法内已转换,直接传入内容即可
* @return bh
* @return bh
*/
*/
BcHash
sendHash
(
Integer
subCode
,
String
content
);
BcHash
sendHash
(
Integer
index
,
Integer
subCode
,
String
content
);
/**
/**
* 记录查询
* 记录查询
...
@@ -77,6 +86,15 @@ public interface BlockChainUtil {
...
@@ -77,6 +86,15 @@ public interface BlockChainUtil {
*/
*/
BcHistory
fetchHistory
(
Map
<
String
,
Object
>
map
);
BcHistory
fetchHistory
(
Map
<
String
,
Object
>
map
);
/**
* 文本追加更新
*
* @param content 内容文本,上限为200KB
* @param recordId 本条记录上次上链或追加返回的记录id, 确保顺序追加
* @return bc
*/
BcText
appendText
(
Integer
index
,
String
content
,
String
recordId
);
/**
/**
* 文本追加更新
* 文本追加更新
*
*
...
@@ -93,7 +111,7 @@ public interface BlockChainUtil {
...
@@ -93,7 +111,7 @@ public interface BlockChainUtil {
* @param recordId 本条记录上次上链或追加返回的记录id, 确保顺序追加
* @param recordId 本条记录上次上链或追加返回的记录id, 确保顺序追加
* @return bc
* @return bc
*/
*/
BcHash
appendHash
(
String
content
,
String
recordId
);
BcHash
appendHash
(
Integer
index
,
String
content
,
String
recordId
);
/**
/**
* 哈希防篡改校验
* 哈希防篡改校验
...
...
dev-blockcha/src/main/java/com/tykj/dev/blockcha/subject/service/impl/BlockChainUtilImpl.java
浏览文件 @
4d8b89f5
...
@@ -27,9 +27,14 @@ import java.util.UUID;
...
@@ -27,9 +27,14 @@ import java.util.UUID;
@Component
@Component
public
class
BlockChainUtilImpl
implements
BlockChainUtil
{
public
class
BlockChainUtilImpl
implements
BlockChainUtil
{
private
final
static
String
SECRET_KEY
=
"3RJWStDCXN7mqJyZAB8rF59f87arGShdk9aKyDN3wKbzq9JnaXom1Hpe6mHT1k2yx9zfE7VFWidqwuxyT7DtPjCs"
;
public
String
SECRET_KEY
=
"3mdeM1dw2FfHrd5h6WAuhB3WYdDG6ZAgz96CcM1nzxbiYA8QaaZHW75Je9xKixTTD2rwujyb1gVUNPYm5W6FPZQ8"
;
private
final
static
String
SECRET_ID
=
"JAjQyTZdR8bmbHaU6iiFGvrCuUik4cG4U4ostk8KKrbS"
;
public
String
SECRET_ID
=
"3yXRRiL9xsLfbt2kv7qRH2so6ChJX3rFkay7Njcsxfbp"
;
private
final
static
String
BLOCK_CHAIN_URL
=
"http://192.168.0.80:8076"
;
private
final
static
String
BLOCK_CHAIN_URL
=
"http://10.153.4.12:8076"
;
private
final
static
String
BLOCK_CHAIN_URL2
=
"http://10.153.8.10:8076"
;
private
final
static
String
BLOCK_CHAIN_URL3
=
"http://10.153.8.11:8076"
;
private
final
static
String
BLOCK_CHAIN_URL4
=
"http://10.153.110.10:8076"
;
private
final
static
String
BLOCK_CHAIN_URL5
=
"http://10.153.6.11:8076"
;
@Override
@Override
...
@@ -59,13 +64,45 @@ public class BlockChainUtilImpl implements BlockChainUtil {
...
@@ -59,13 +64,45 @@ public class BlockChainUtilImpl implements BlockChainUtil {
}
}
@Override
@Override
public
BcText
sendText
(
Integer
subCode
,
String
content
)
{
public
BcText
sendText
(
Integer
index
,
Integer
subCode
,
String
content
)
{
SortedMap
<
Object
,
Object
>
request
=
getRequest
();
SortedMap
<
Object
,
Object
>
request
=
getRequest
();
request
.
put
(
"content"
,
content
);
request
.
put
(
"content"
,
content
);
request
.
put
(
"subCode"
,
subCode
);
request
.
put
(
"subCode"
,
subCode
);
request
.
put
(
"apiSignature"
,
ApiSignatureUtil
.
getApiSignature
(
request
,
SECRET_KEY
));
request
.
put
(
"apiSignature"
,
ApiSignatureUtil
.
getApiSignature
(
request
,
SECRET_KEY
));
switch
(
index
){
case
1
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL
+
BcUrl
.
SEND_TEXT
,
request
,
BcText
.
class
);
case
2
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL2
+
BcUrl
.
SEND_TEXT
,
request
,
BcText
.
class
);
case
3
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL3
+
BcUrl
.
SEND_TEXT
,
request
,
BcText
.
class
);
case
4
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL4
+
BcUrl
.
SEND_TEXT
,
request
,
BcText
.
class
);
case
5
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL5
+
BcUrl
.
SEND_TEXT
,
request
,
BcText
.
class
);
}
return
new
RestTemplate
().
postForObject
(
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL
+
BcUrl
.
SEND_TEXT
,
BLOCK_CHAIN_URL
+
BcUrl
.
SEND_TEXT
,
request
,
request
,
...
@@ -73,19 +110,66 @@ public class BlockChainUtilImpl implements BlockChainUtil {
...
@@ -73,19 +110,66 @@ public class BlockChainUtilImpl implements BlockChainUtil {
);
);
}
}
public
static
void
main
(
String
[]
args
)
{
@Override
new
BlockChainUtilImpl
().
sendHash
(
1
,
"阿斯顿好看"
);
public
BcText
sendText
(
Integer
subCode
,
String
content
)
{
SortedMap
<
Object
,
Object
>
request
=
getRequest
();
request
.
put
(
"content"
,
content
);
request
.
put
(
"subCode"
,
subCode
);
request
.
put
(
"apiSignature"
,
ApiSignatureUtil
.
getApiSignature
(
request
,
SECRET_KEY
));
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL
+
BcUrl
.
SEND_TEXT
,
request
,
BcText
.
class
);
}
}
// public static void main(String[] args) {
// new BlockChainUtilImpl().sendHash(1,"阿斯顿好看");
// }
@Override
@Override
public
BcHash
sendHash
(
Integer
subCode
,
String
content
)
{
public
BcHash
sendHash
(
Integer
index
,
Integer
subCode
,
String
content
)
{
SortedMap
<
Object
,
Object
>
request
=
getRequest
();
SortedMap
<
Object
,
Object
>
request
=
getRequest
();
request
.
put
(
"content"
,
HexUtil
.
hex64
(
content
));
request
.
put
(
"content"
,
HexUtil
.
hex64
(
content
));
request
.
put
(
"subCode"
,
subCode
);
request
.
put
(
"subCode"
,
subCode
);
String
s
=
ApiSignatureUtil
.
getApiSignature
(
request
,
SECRET_KEY
);
String
s
=
ApiSignatureUtil
.
getApiSignature
(
request
,
SECRET_KEY
);
log
.
info
(
"apiSignature:{}"
,
s
);
log
.
info
(
"apiSignature:{}"
,
s
);
request
.
put
(
"apiSignature"
,
s
);
request
.
put
(
"apiSignature"
,
s
);
switch
(
index
){
case
1
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL
+
BcUrl
.
SEND_HASH
,
request
,
BcHash
.
class
);
case
2
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL2
+
BcUrl
.
SEND_HASH
,
request
,
BcHash
.
class
);
case
3
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL3
+
BcUrl
.
SEND_HASH
,
request
,
BcHash
.
class
);
case
4
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL4
+
BcUrl
.
SEND_HASH
,
request
,
BcHash
.
class
);
case
5
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL5
+
BcUrl
.
SEND_HASH
,
request
,
BcHash
.
class
);
}
return
new
RestTemplate
().
postForObject
(
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL
+
BcUrl
.
SEND_HASH
,
BLOCK_CHAIN_URL
+
BcUrl
.
SEND_HASH
,
request
,
request
,
...
@@ -119,13 +203,43 @@ public class BlockChainUtilImpl implements BlockChainUtil {
...
@@ -119,13 +203,43 @@ public class BlockChainUtilImpl implements BlockChainUtil {
}
}
@Override
@Override
public
BcText
appendText
(
String
content
,
String
recordId
)
{
public
BcText
appendText
(
Integer
index
,
String
content
,
String
recordId
)
{
SortedMap
<
Object
,
Object
>
request
=
getRequest
();
SortedMap
<
Object
,
Object
>
request
=
getRequest
();
request
.
put
(
"content"
,
content
);
request
.
put
(
"content"
,
content
);
request
.
put
(
"recordID"
,
recordId
);
request
.
put
(
"recordID"
,
recordId
);
String
s
=
ApiSignatureUtil
.
getApiSignature
(
request
,
SECRET_KEY
);
String
s
=
ApiSignatureUtil
.
getApiSignature
(
request
,
SECRET_KEY
);
request
.
put
(
"apiSignature"
,
s
);
request
.
put
(
"apiSignature"
,
s
);
switch
(
index
){
case
1
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL
+
BcUrl
.
APPEND_TEXT
,
request
,
BcText
.
class
);
case
2
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL2
+
BcUrl
.
APPEND_TEXT
,
request
,
BcText
.
class
);
case
3
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL3
+
BcUrl
.
APPEND_TEXT
,
request
,
BcText
.
class
);
case
4
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL4
+
BcUrl
.
APPEND_TEXT
,
request
,
BcText
.
class
);
case
5
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL5
+
BcUrl
.
APPEND_TEXT
,
request
,
BcText
.
class
);
}
return
new
RestTemplate
().
postForObject
(
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL
+
BcUrl
.
APPEND_TEXT
,
BLOCK_CHAIN_URL
+
BcUrl
.
APPEND_TEXT
,
request
,
request
,
...
@@ -133,13 +247,61 @@ public class BlockChainUtilImpl implements BlockChainUtil {
...
@@ -133,13 +247,61 @@ public class BlockChainUtilImpl implements BlockChainUtil {
}
}
@Override
@Override
public
BcHash
appendHash
(
String
content
,
String
recordId
)
{
public
BcText
appendText
(
String
content
,
String
recordId
)
{
SortedMap
<
Object
,
Object
>
request
=
getRequest
();
request
.
put
(
"content"
,
content
);
request
.
put
(
"recordID"
,
recordId
);
String
s
=
ApiSignatureUtil
.
getApiSignature
(
request
,
SECRET_KEY
);
request
.
put
(
"apiSignature"
,
s
);
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL
+
BcUrl
.
APPEND_TEXT
,
request
,
BcText
.
class
);
}
@Override
public
BcHash
appendHash
(
Integer
index
,
String
content
,
String
recordId
)
{
SortedMap
<
Object
,
Object
>
request
=
getRequest
();
SortedMap
<
Object
,
Object
>
request
=
getRequest
();
request
.
put
(
"content"
,
HexUtil
.
hex64
(
content
));
request
.
put
(
"content"
,
HexUtil
.
hex64
(
content
));
request
.
put
(
"recordID"
,
recordId
);
request
.
put
(
"recordID"
,
recordId
);
String
s
=
ApiSignatureUtil
.
getApiSignature
(
request
,
SECRET_KEY
);
String
s
=
ApiSignatureUtil
.
getApiSignature
(
request
,
SECRET_KEY
);
request
.
put
(
"apiSignature"
,
s
);
request
.
put
(
"apiSignature"
,
s
);
switch
(
index
){
case
1
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL
+
BcUrl
.
APPEND_HASH
,
request
,
BcHash
.
class
);
case
2
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL2
+
BcUrl
.
APPEND_HASH
,
request
,
BcHash
.
class
);
case
3
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL3
+
BcUrl
.
APPEND_HASH
,
request
,
BcHash
.
class
);
case
4
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL4
+
BcUrl
.
APPEND_HASH
,
request
,
BcHash
.
class
);
case
5
:
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL5
+
BcUrl
.
APPEND_HASH
,
request
,
BcHash
.
class
);
}
return
new
RestTemplate
().
postForObject
(
return
new
RestTemplate
().
postForObject
(
BLOCK_CHAIN_URL
+
BcUrl
.
APPEND_HASH
,
BLOCK_CHAIN_URL
+
BcUrl
.
APPEND_HASH
,
request
,
request
,
...
...
dev-config/src/main/java/com/tykj/dev/config/domin/SystemLog.java
0 → 100644
浏览文件 @
4d8b89f5
package
com
.
tykj
.
dev
.
config
.
domin
;
import
java.util.Date
;
/**
* @author zjm
* @version 1.0.0
* @ClassName SystemLog.java
* @Description TODO
* @createTime 2020年12月03日 14:14:00
*/
public
class
SystemLog
{
/**
* 日志数据id
*/
private
Integer
id
;
/**
* 创建时间
*/
private
Date
createTime
=
new
Date
();
/**
* 操作人名称
*/
private
String
operatorName
;
}
dev-config/src/main/java/com/tykj/dev/config/swagger/Swagger2Config.java
浏览文件 @
4d8b89f5
...
@@ -69,7 +69,7 @@ public class Swagger2Config {
...
@@ -69,7 +69,7 @@ public class Swagger2Config {
}
}
private
SecurityScheme
securityScheme
()
{
private
SecurityScheme
securityScheme
()
{
GrantType
grantType
=
new
ResourceOwnerPasswordCredentialsGrant
(
"/userLogin"
);
GrantType
grantType
=
new
ResourceOwnerPasswordCredentialsGrant
(
"/
equip/
userLogin"
);
return
new
OAuthBuilder
()
return
new
OAuthBuilder
()
.
name
(
"spring_oauth"
)
.
name
(
"spring_oauth"
)
...
...
dev-file/src/main/java/com/tykj/dev/device/file/Controller/FileController.java
浏览文件 @
4d8b89f5
...
@@ -105,7 +105,7 @@ public class FileController {
...
@@ -105,7 +105,7 @@ public class FileController {
if
(!
file1
.
exists
())
{
if
(!
file1
.
exists
())
{
file1
.
mkdirs
();
file1
.
mkdirs
();
}
}
String
fileName
=
UUID
.
randomUUID
().
toString
()
+
".pdf"
;
String
fileName
=
UUID
.
randomUUID
().
toString
()
.
replace
(
"-"
,
""
)
+
".pdf"
;
File
file
=
new
File
(
url
+
"print/"
+
fileName
);
File
file
=
new
File
(
url
+
"print/"
+
fileName
);
// 第一步:创建一个document对象。
// 第一步:创建一个document对象。
...
@@ -145,7 +145,7 @@ public class FileController {
...
@@ -145,7 +145,7 @@ public class FileController {
OutputStream
os
=
null
;
OutputStream
os
=
null
;
String
[]
split
=
originalFilename
.
split
(
"\\."
);
String
[]
split
=
originalFilename
.
split
(
"\\."
);
String
newName
=
UUID
.
randomUUID
().
toString
()
+
"."
+
split
[
split
.
length
-
1
];
String
newName
=
UUID
.
randomUUID
().
toString
()
.
replace
(
"-"
,
""
)
+
"."
+
split
[
split
.
length
-
1
];
byte
[]
typeByte
=
new
byte
[
1024
*
1024
*
10
];
byte
[]
typeByte
=
new
byte
[
1024
*
1024
*
10
];
try
{
try
{
inputStream
=
file
.
getInputStream
();
inputStream
=
file
.
getInputStream
();
...
...
dev-file/src/main/java/com/tykj/dev/device/file/service/Impl/UseReportFIleServiceImpl.java
浏览文件 @
4d8b89f5
...
@@ -98,7 +98,7 @@ public class UseReportFIleServiceImpl implements UseReportFIleService {
...
@@ -98,7 +98,7 @@ public class UseReportFIleServiceImpl implements UseReportFIleService {
String
fileName
=
wrodParameter
.
getTitle1
()
+
".doc"
;
String
fileName
=
wrodParameter
.
getTitle1
()
+
".doc"
;
url
=
url
+
UUID
.
randomUUID
().
toString
()
+
".doc"
;
url
=
url
+
UUID
.
randomUUID
().
toString
()
.
replace
(
"-"
,
""
)
+
".doc"
;
FileOutputStream
out
=
new
FileOutputStream
(
url
);
FileOutputStream
out
=
new
FileOutputStream
(
url
);
doc
.
write
(
out
);
doc
.
write
(
out
);
out
.
close
();
out
.
close
();
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论