web项目使用fastdsf上传|下载文件
在上传代码中添加一下代码
suffix=suffix.substring(1);
fast.FastDFSFile file = new fast.FastDFSFile(mFile.getBytes(), suffix);
NameValuePair[] meta_list = new NameValuePair[4];
meta_list[0] = new NameValuePair("fileName", mFile.getOriginalFilename());
meta_list[1] = new NameValuePair("fileLength", String.valueOf(mFile.getSize()));
meta_list[2] = new NameValuePair("fileExt", suffix);
meta_list[3] = new NameValuePair("fileAuthor", "WangLiang");
String filePath = fast.FileManager.upload(file, meta_list);
System.out.println(filePath);

public class FastDFSClient {
private TrackerClient trackerClient = null;
private TrackerServer trackerServer = null;
private StorageClient1 storageClient = null;
private StorageServer storageServer = null;
public FastDFSClient(String conf) throws Exception {
if (conf.contains("classpath:")) {
conf = conf.replace("classpath:", this.getClass().getResource("/").getPath());
}
ClientGlobal.init(conf);
trackerClient = new TrackerClient();
trackerServer = trackerClient.getConnection();
storageServer = null;
storageClient = new StorageClient1(trackerServer, storageServer);
}
public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception {
String result = storageClient.upload_file1(fileName, extName, metas);
return result;
}
public String uploadFile(String fileName) throws Exception {
String result = storageClient.upload_file1(fileName, null, null);
return result;
}
public String uploadFile(String fileName, String extName) throws Exception {
String result = storageClient.upload_file1(fileName, extName, null);
return result;
}
}
public class FastDFSFile {
private static final long serialVersionUID = 1L;
private byte[] content;
private String name;
private String ext;
private String length;
public FastDFSFile(byte[] content, String ext) {
this.content = content;
this.ext = ext;
}
public FastDFSFile(byte[] content, String name, String ext) {
this.content = content;
this.name = name;
this.ext = ext;
}
public FastDFSFile(byte[] content, String name, String ext, String length
) {
this.content = content;
this.name = name;
this.ext = ext;
this.length = length;
}
public byte[] getContent() {
return content;
}
public void setContent(byte[] content) {
this.content = content;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getExt() {
return ext;
}
public void setExt(String ext) {
this.ext = ext;
}
public String getLength() {
return length;
}
public void setLength(String length) {
this.length = length;
}
}
public class FileManager implements FileManagerConfig {
private static final long serialVersionUID = 1L;
private static TrackerClient trackerClient;
private static TrackerServer trackerServer;
private static StorageServer storageServer;
private static StorageClient storageClient;
static {
try {
String classPath = new File(FileManager.class.getResource("/").getFile()).getCanonicalPath();
String fdfsClientConfigFilePath = classPath + File.separator + CLIENT_CONFIG_FILE;
ClientGlobal.init(fdfsClientConfigFilePath);
trackerClient = new TrackerClient();
trackerServer = trackerClient.getConnection();
storageClient = new StorageClient(trackerServer, storageServer);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 文件上传
* @param file
* @param valuePairs
* @return
*/
public static String upload(FastDFSFile file, NameValuePair[] valuePairs) {
String[] uploadResults = null;
try {
uploadResults = storageClient.upload_file(file.getContent(), file.getExt(), valuePairs);
} catch (Exception e) {
e.printStackTrace();
}
String groupName = uploadResults[0];
String remoteFileName = uploadResults[1];
String fileAbsolutePath = PROTOCOL + TRACKER_NGNIX_ADDR + SEPARATOR + groupName + SEPARATOR + remoteFileName;
return fileAbsolutePath;
}
/**
* 文件下载
* @param groupName
* @param remoteFileName
* @param specFileName
* @return
*/
public static ResponseEntity<byte[]> download(String groupName, String remoteFileName, String specFileName) {
byte[] content = null;
HttpHeaders headers = new HttpHeaders();
try {
content = storageClient.download_file(groupName, remoteFileName);
headers.setContentDispositionFormData("attachment",
new String(specFileName.getBytes("UTF-8"), "iso-8859-1"));
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new ResponseEntity<byte[]>(content, headers, HttpStatus.CREATED);
}
}
public interface FileManagerConfig extends Serializable {
public static final String PROTOCOL = "http://";
public static final String SEPARATOR = "/";
public static final String TRACKER_NGNIX_ADDR = "192.168.111.136";
public static final String TRACKER_NGNIX_PORT = "";
public static final String CLIENT_CONFIG_FILE = "client.conf";
}


tracker_server=192.168.111.136:22122
下载
根据之前上传保存的物理路径 截取
/**
* 下载 截取物理路径下载
* @param awardModel
* @param request
* @param response
* @param createtime
* @param endtime
* @param act_id
* @throws Exception
*/
/*@RequestMapping(value = "/{username}/download", method = RequestMethod.GET)
public ResponseEntity<byte[]> download(@PathVariable String username, Model model,HttpServletResponse response) throws IOException, MyException {
User u = users.get(username);
String filePath = u.getFilePath();
String substr = filePath.substring(filePath.indexOf("group"));
String group = substr.split("/")[0];
String remoteFileName = substr.substring(substr.indexOf("/")+1);
String specFileName = username + substr.substring(substr.indexOf("."));
return FileManager.download(group, remoteFileName,specFileName);
}*/
web项目使用fastdsf上传|下载文件的更多相关文章
- java web service 上传下载文件
1.新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress package com; import java.io.FileInputStream; imp ...
- 【WCF】利用WCF实现上传下载文件服务
引言 前段时间,用WCF做了一个小项目,其中涉及到文件的上传下载.出于复习巩固的目的,今天简单梳理了一下,整理出来,下面展示如何一步步实现一个上传下载的WCF服务. 服务端 1.首先新建一个名 ...
- WebSSH画龙点睛之lrzsz上传下载文件
本篇文章没有太多的源码,主要讲一下实现思路和技术原理 当使用Xshell或者SecureCRT终端工具时,我的所有文件传输工作都是通过lrzsz来完成的,主要是因为其简单方便,不需要额外打开sftp之 ...
- SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例
本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...
- C#实现http协议支持上传下载文件的GET、POST请求
C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; usin ...
- rz和sz上传下载文件工具lrzsz
######################### rz和sz上传下载文件工具lrzsz ####################################################### ...
- linux上很方便的上传下载文件工具rz和sz
linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...
- shell通过ftp实现上传/下载文件
直接代码,shell文件名为testFtptool.sh: #!/bin/bash ########################################################## ...
- linux下常用FTP命令 上传下载文件【转】
1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...
随机推荐
- 英语单词composing
composing 来源——书籍Python.Crash.Course.2015.11 Using Individual Values from a List You can use individu ...
- Dubbo学习-4-dubbo简单案例-2-服务提供者和消费者配置
在上一篇帖子的基础上,开始使用dubbo来实现RPC调用: 根据dubbo的架构图可知,需要做以下几件事情: 1.将服务提供者注册到注册中心(暴露服务) (1)引入dubbo依赖, 这里依赖2.6.2 ...
- HashMap底层代码分析
public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; //this.loadFactor为加载因子,其值为默认的加载因子常量:DEFAUL ...
- 0XFF
0xFF = 00000000000000000000000011111111 也就是说 0xFF 代表了一个 byte 位全为 1,-1的补码(数据). 数值和数据是两个不同的概念.数值表示一个数的 ...
- 【HDOJ6699】Block Breaker(模拟)
题意:给定一个n*m的网格块,如果一个块水平或垂直方向没有相邻支撑就会掉下去 有q次询问,每次会掉下去一块,问连锁反应新掉下的块数 n,m<=2e3,q<=1e5 思路: #include ...
- 解决webpack打包vue项目后,部署完成后,刷新页面页面404
1.url不动式url完全不动,即你的页面怎么改变,怎么跳转url都不会改变.这种情况的原理 就是纯ajax拿到页面后替换原页面中的元素,刷新页面就是首页 2.带hash(#)式这种相对于第一种的话刷 ...
- easyui的datagrid里getSelections只能获取一行值???
使用getSelections只能获取到一行的值,检查了半天是因为idField属性值写错,更正之后ok. 解决办法二:改为使用getChecked,idField写错无影响, 注: getSelec ...
- VBox 启动虚拟机失败 - NtCreateFile(\Device\VBoxDrvStub)
在Vbox(5.0.8 版本)启动Ubuntu的虚拟机时,遇到错误信息: NtCreateFile(\Device\VBoxDrvStub) failed: 0xc000000034 STATUS_O ...
- Mac自带服务器的应用
Mac OS下自带了apache,方便部署一些静态数据(html,css,js,xml,图片等数据) 一.系统默认路径 系统默认是隐藏apache安装目录的,但我们可以通过“命令行”或者“文件夹前往” ...
- maven 依赖调解
项目A有两条依赖关系 A->B->C->X(1.0),A->D->X(2.0) ,X是A的传递性依赖,但是两条路径上有两个版本的依赖,会选择哪个呢? maven 依赖调 ...