dfs文件服务器访问权限,fastDFS 文件服务器访问
鉴权 token 获取
token 由文件服务器管理员分配
接口定义
上传文件
请求 URL:
请求方式:
GET/POST
参数形式:
form-data
参数:
参数名位置类型说明是否必填
access_tokenheaderString用户 token是
fileurlMultipartFile文件是
返回:
参数名必选类型说明
msg是String提示
code是Integer错误代码
data是String数据
data 域内容
参数名必选类型说明
filePath是String文件的存储位置
fileName是Integer文件的原始名称
fileType是String文件类型
httpUrl是String文件的访问地址(未开启防盗链时可用)
返回示例
{
"msg": "操作成功",
"code": 200,
"data": {
"filePath": "group1/M00/00/0D/wKjcAl-SNgmAVJK7AACEAGBrbtI245.jpg",
"fileName": "timg.jpg",
"fileType": "jpg",
"httpUrl": "http://192.168.220.2:80/group1/M00/00/0D/wKjcAl-SNgmAVJK7AACEAGBrbtI245.jpg"
}
}
备注
获取防盗链地址
请求 URL:
请求方式:
GET/POST
参数形式:
form-data
参数:
参数名位置类型说明是否必填
access_tokenheaderString用户 token是
filePathurlString文件路径是
返回:
参数名必选类型说明
msg是String提示
code是Integer错误代码
data是String文件的防盗链访问路径
返回示例
{
"msg": "操作成功",
"code": 200,
"data": "http://192.168.220.2:80/group1/M00/00/0D/wKjcAl-SNgmAVJK7AACEAGBrbtI245.jpg?token=639e5738e7c457eb2f061fc0d71a3165&ts=1603417665"
}
备注
删除文件
请求 URL:
请求方式:
GET/POST
参数形式:
form-data
参数:
参数名位置类型说明是否必填
access_tokenheaderString用户 token是
filePathurlString文件路径是
返回:
参数名必选类型说明
msg是String提示
code是Integer错误代码
data是Integer0 为正常响应,非 0 为异常响应,文件不存在等
返回示例
{
"msg": "操作成功",
"code": 200,
"data": 0
}
备注
java 调用工具类
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
public class HttpClientUtil {
private static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class);
/**
* 路径分隔符
*/
public static final String SEPARATOR = "/";
/**
* Point
*/
public static final String POINT = ".";
/**
* ContentType
*/
public static final Map EXT_MAPS = new HashMap<>();
static {
initExt();
}
public static void initExt() {
// image
EXT_MAPS.put("png", "image/png");
EXT_MAPS.put("gif", "image/gif");
EXT_MAPS.put("bmp", "image/bmp");
EXT_MAPS.put("ico", "image/x-ico");
EXT_MAPS.put("jpeg", "image/jpeg");
EXT_MAPS.put("jpg", "image/jpeg");
// 压缩文件
EXT_MAPS.put("zip", "application/zip");
EXT_MAPS.put("rar", "application/x-rar");
// doc
EXT_MAPS.put("pdf", "application/pdf");
EXT_MAPS.put("ppt", "application/vnd.ms-powerpoint");
EXT_MAPS.put("xls", "application/vnd.ms-excel");
EXT_MAPS.put("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
EXT_MAPS.put("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
EXT_MAPS.put("doc", "application/msword");
EXT_MAPS.put("doc", "application/wps-office.doc");
EXT_MAPS.put("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
EXT_MAPS.put("txt", "text/plain");
// 音频
EXT_MAPS.put("mp4", "video/mp4");
EXT_MAPS.put("flv", "video/x-flv");
}
/**
* @Title: postRestData
* @TitleExplain: post请求接口
* @Description: post请求接口
* @param urlStr 请求url
* @return String post响应
*/
public static String postDataLikeFormData(String urlStr,MultipartFile file,String fastdfsAccessToken) {
String result = "";
// 换行符
final String newLine = "\r\n";
final String boundaryPrefix = "--";
// 定义数据分隔线
String BOUNDARY = "========7d4a6d158c9";
// 服务器的域名
URL url =null;
HttpURLConnection conn=null;
DataInputStream in=null;
try {
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
// 设置为POST情
conn.setRequestMethod("POST");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
// 设置请求头参数
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("Charsert", "UTF-8");
conn.setRequestProperty("access_token",fastdfsAccessToken);
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
OutputStream out = new DataOutputStream(conn.getOutputStream());
/**
* 循环输出
*
* */
StringBuilder sb = new StringBuilder();
sb.append(boundaryPrefix);
sb.append(BOUNDARY);
sb.append(newLine);
sb.append("Content-Disposition: form-data;name=\"file\";filename=\"" + file.getOriginalFilename()
+ "\"" + newLine);
String contentType=getContentTypeByFileName(file.getOriginalFilename());
sb.append("Content-Type:"+contentType);
sb.append(newLine);
sb.append(newLine);
out.write(sb.toString().getBytes());
byte[] bufferOut = new byte[1024];
int bytes = 0;
//如果文件为空则不上传
if (file.isEmpty() || file.getSize() <= 0) {
logger.debug("文件为空或大小为0没有上传fastdfs:" + file.getOriginalFilename());
return null;
}
in = new DataInputStream(file.getInputStream());
while ((bytes = in.read(bufferOut)) != -1) {
//bufferOut转化为String之后会损失部分数据,所以之后的操作直接输出,不转化为string
// sb.append(new String(bufferOut));
out.write(bufferOut, 0, bytes);
}
sb.append(newLine + boundaryPrefix + BOUNDARY);
sb.append(boundaryPrefix + newLine);
byte[] end_data = (newLine + boundaryPrefix + BOUNDARY + boundaryPrefix + newLine).getBytes();
out.write(end_data);
logger.debug("请求数据为: "+sb.toString());
out.flush();
out.close();
StringBuffer sbResult = new StringBuffer();
// 定义BufferedReader输入流来读取URL的响应
BufferedReader reader = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
//System.out.println(line);
sbResult.append(line+"\r\n");
}
reader.close();
result = sbResult.toString();
} catch (Exception e) {
logger.error("发送POST请求出现异常!" + e);
}finally {
if (conn != null) {
conn.disconnect();
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
logger.debug("post "+urlStr +",result="+result);
return result;
}
/**
* 根据文件名获取contentType
* */
public static String getContentTypeByFileName(String fileName){
return EXT_MAPS.get(getFilenameSuffix(fileName));
}
/**
* 获取文件名称的后缀
*
* @param filename 文件名 或 文件路径
* @return 文件后缀
*/
public static String getFilenameSuffix(String filename) {
String suffix = null;
String originalFilename = filename;
if (StringUtils.isNotBlank(filename)) {
if (filename.contains(SEPARATOR)) {
filename = filename.substring(filename.lastIndexOf(SEPARATOR) + 1);
}
if (filename.contains(POINT)) {
suffix = filename.substring(filename.lastIndexOf(POINT) + 1);
} else {
if (logger.isErrorEnabled()) {
logger.error("filename error without suffix : {}", originalFilename);
}
}
}
return suffix;
}
/**
* 从指定系统获取写卡数据
*
* */
public static String downloadFile(String urlStr,String filePath,String fastdfsAccessToken){
String result = null;
try{
HttpClient client = new DefaultHttpClient();
StringBuffer sb=new StringBuffer(urlStr);
StringBuffer params=new StringBuffer("");
params.append("filePath=");
params.append(filePath);
HttpPost post = new HttpPost(sb.toString());
//设置header参数
post.addHeader("access_token",fastdfsAccessToken);
//设置其它参数
StringEntity stringEntity = new StringEntity(params.toString());//param参数,可以为"key1=value1&key2=value2"的一串字符串
stringEntity.setContentType("application/x-www-form-urlencoded");
post.setEntity(stringEntity);
HttpResponse resp = client.execute(post);
BufferedReader brBufferedReader = new BufferedReader(
new InputStreamReader(resp.getEntity().getContent(), "utf-8"));
StringBuffer resultSb = new StringBuffer();
String line = "";
while ((line = brBufferedReader.readLine()) != null) {
resultSb.append(line);
}
brBufferedReader.close();
result = resultSb.toString();
}catch(Exception e){
logger.error("系统异常:",e);
}
return result;
}
}
dfs文件服务器访问权限,fastDFS 文件服务器访问相关推荐
- 服务器禁止访问文件,服务器文件夹访问权限设置 控制访问权限方法
在企业局域网中,我们经常需要共享文件供局域网用户访问使用,但是为了保证共享文件的安全,我们也需要设置共享文件的访问权限,防止访问共享文件的用户越权访问共享文件的行为.那么,具体如何实现呢?可以通过以下 ...
- 计算机名无法访问。您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限。拒绝访问。
网上邻居共享出现的错误:计算机名"无法访问.您可能没有权限使用网络资源.请与这台服务器的管理员联系以查明您是否有访问权限.拒绝访问." 操作系统 :Windows Server ...
- JAVA接口的访问权限_Java中访问权限-类和接口
(1)类和接口的访问权限种类一样 , 有两中public,default,它们的不同在于是否能访问不同包中的类或接口 default:只能在本包中访问 public:任何地方都可以访问,当然不同的包中 ...
- private访问权限java_Java之访问权限
访问权限的目的是什么? 1.让客户端程序员无法触及他们不应该触及的代码.同时还可以通过这种方法来告诉客户端程序员那些东西对他们来说是重要的,那些是可以忽略的. 2.允许库设计者可以改变内部的工作方式, ...
- linux查看目录访问权限,Linux文件访问权限
一.设置用户ID和设置组ID 1.实际用户ID和实际组ID标识当前登录的用户. 2.有效用户ID,有效组ID以及附加组ID决定了我们的文件访问权限. 3.通常,有效用户ID等于实际用户ID,有效组ID ...
- python属性访问权限_python 面向对象-访问权限修饰符
1.访问权限修饰符可以用来修饰变量和方法 2.内部调用和外部调用: 比如在类的内部调用实例方法,叫内部调用:在类的外部调用实例化方法,叫外部调用 当然,类变量以及实例变脸也是有内部调用和外部调用 #c ...
- java 对象访问权限_Java面向对象--访问权限
访问权限 1. public 公共的 2. private 私有的 3. default 包内的 package com.kjy.entity; public class Person { publi ...
- 服务器2003共享文件夹设置密码,win2003 server r2 设置不需要密码验证的共享文件访问权限(即匿名访问)...
设置不需要密码验证的共享文件访问权限,也即匿名访问共享文件,方法如下: 默认情况,在同一工作组模式下,访问Windows 2003 server机器中共享的文件夹时,由于本地安全策略的限制,在输入UN ...
- 2022-02-11 Android 弹出申请访问权限,动态访问权限弹窗,比如存储权限
一.Android 弹出申请访问权限代码,动态访问权限弹窗. public Boolean checkPermission() { boolean isGranted = true; if (andr ...
最新文章
- MASQUERADE --random 端口不随机
- 什么是URL、绝对URL和相对URL
- SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder.
- python实操题_Python100道练习题,光看不练假把式,Python实操资源
- hadoop windows
- libgdx游戏引擎开发笔记(十三)SuperJumper游戏例子的讲解(篇七)----各个物体的创建及其碰撞检测...
- 循环序列模型 —— 1.8 带有神经网络的梯度消失
- 单例对象会被jvm的gc时回收吗_设计模式专题02-单例五种创建方式
- (62)FPGA面试题-用verilog写一段代码,实现消除一个glitch(毛刺)(一)
- Bailian4003 十六进制转十进制【入门】
- 有限时间不明确需求项目的上线(部分还款)
- 位、字、字节的区别 | 汇编伪指令db,dw,dd
- 离开(切换)当前页面时改变页面title
- phpStorm 2017.3.1,WebStorm 2017.3.4 最新版本免费注册激活方法
- D1格式是720*576还是704*576
- Android GMS认证总结01
- 三元一次方程组步骤_怎样解三元一次方程组 50道三元一次方程组计算题及答案过程...
- 编译原理——自下而上的语法分析方法(LR分析法)
- 京东到家埋点治理实践
- 12星座绝情榜,你的绝情指数是多少呢?
热门文章
- h5 nan_手把手教你将H5游戏打包成快游戏
- java逻辑运算符_Java逻辑运算符
- java 字母金字塔_LeetCode756:金字塔转换矩阵(JAVA题解)
- mysql日期比较timestamp_Mysql中的Datetime和Timestamp比较(转载)
- java jsp的指令_[javaEE] jsp的指令
- java上传视频到七牛云_Java进阶学习:将文件上传到七牛云中
- g标签 怎么设置svg_SVG g元素
- linux dns 内网ip,Ubuntu中ip地址、网关、网络号、DNS等解释
- Git 的安装、使用、分支、命令 一篇博客全都学会
- Google File System 学习笔记