方法总结 | |
---|---|
byte[] |
getBytes() 返回文件的内容作为一个字节数组。 |
String |
getContentType() 返回文件的内容类型。 |
InputStream |
getInputStream() 返回InputStream读取文件的内容。 |
String |
getName() 返回参数的名称多部分的形式。 |
String |
getOriginalFilename() 返回原来的文件名在客户机的文件系统。 |
long |
getSize() 返回文件的大小,以字节为单位。 |
boolean |
isEmpty() 返回是否上传文件是空的,也就是说,没有文件 选择多部分形式或所选的文件中没有的内容。 |
void |
transferTo(File dest) 接收到的文件转移到给定的目标文件。 |
方法的细节 |
---|
字符串 getName()
返回参数的名称多部分的形式。
返回:
参数的名称(没有null
或空)
字符串 getOriginalFilename()
返回原来的文件名在客户机的文件系统。
这可能包含路径信息取决于所使用的浏览器, 但它通常不会与任何其他比歌剧。
返回:
原来的文件名,或空字符串如果没有文件 多部分形式的选择
字符串 getContentType()
返回文件的内容类型。
返回:
内容类型,或null
如果没有定义 (或多部分没有选择文件的形式)
布尔isEmpty()
返回是否上传文件是空的,也就是说,没有文件 选择多部分形式或所选的文件中没有的内容。
长getSize()
返回文件的大小,以字节为单位。
返回:
文件的大小,如果空或0
byte[]getBytes()
抛出IOException
返回文件的内容作为一个字节数组。
返回:
文件的内容作为字节,如果空或空字节数组
抛出:
IOException
在访问错误的情况下(如果临时存储失败)
InputStream getInputStream()
抛出IOException
返回InputStream读取文件的内容。 用户负责关闭流。
返回:
文件的内容流,如果空或空流
抛出:
IOException
在访问错误的情况下(如果临时存储失败)
无效transferTo(文件桌子)
抛出IOException,IllegalStateException
接收到的文件转移到给定的目标文件。
这个可以移动文件的文件系统,复制文件 文件系统,或者内存内容保存到目标文件。 如果目标文件已经存在,它将被删除。
如果文件被移动的文件系统,这个操作不能 再次被调用。 因此,调用这个方法能够仅仅一次 适用于任何存储机制。
参数:
dest
——目标文件
抛出:
IOException
——在阅读或写作的错误
IllegalStateException
如果文件已被移动 在文件系统和不可用了另一个转移
实例:
需求规格:实现上传文件功能,并将上传的文件内容转换成二进制ByteBuffer的形式,作为服务的入参。
使用技术:html,JS,JQuery(miniUI),Ajax,MultipartFile;SpringBoot框架
html代码:
JS代码:
$("#upload").on("click",function(){
FileUpload();
});
function FileUpload(){
var formData = new FormData();
formData.append("files",$("#file")[0].files[0]);
$.ajax({
type:"POST",
url:contextPath+"/XXX/XXX",
data:formData,
dataType:"json",
mimeType:"multipart/form-data",
cache:false,
processData:false,
contentType:false,
success:function(data){
if(11 === data.status){
alert("导入成功");
}else{
alert("导入失败");
}
}
});
}
java代码:
@Autowired
DHGHXLDRConfig dhghxldrConfig;
@RequestMapping("/getFileToByte")
@ResponseBody
public Object getFileToByte(@RequestParam(value="files",required=false) MultipartFile multipartFile,HttpServletRequest request)
{
String realpath = "";
String name = "";
if(multipartFile != null){
long size = multipartFile.getSize();
if(size > 100*1024){
JsonResult.errorException("");
}
name = multipartFile.getOriginalFilename();
String subffix = name.substring(name.lastIndexOf(".")+1,name.length());
String filePath = dhghxldrConfig.getXlfilePath();
File file = new File(filePath,name);
byte[] by = new byte[(int)file.length()];
try{
FileInputStream inputStream = new FileInputStream(file);
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
byte[] bb = new byte[2048];
int ch;
ch = inputStream.read(bb);
while(ch != -1){
bytestream.write(bb,0,ch);
ch = inputStream.read(bb);
}
by = bytestream.toByteArray();
buffer = ByteBuffer.wrap(by);
//根据业务调接口,传参数
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}catch(TException e){
e.printStackTrace();
}
return JsonResult.ok("");
}
return JsonResult.errorExcption("");
}
JsonResult代码:
public class JsonResult {
private static final int STATUS_OK = 11;
private static final int STATUS_EXCEPTION = 22;
private static final int STATUS_OTHER = 33;
private int status;
private String tips;
private Object content;
private JsonResult(int status,String tips,Object content){
this.status = status;
this.tips = tips;
this.content = content;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getTips() {
return tips;
}
public void setTips(String tips) {
this.tips = tips;
}
public Object getContent() {
return content;
}
public void setContent(Object content) {
this.content = content;
}
public static int getStatusOk() {
return STATUS_OK;
}
public static int getStatusException() {
return STATUS_EXCEPTION;
}
public static int getStatusOther() {
return STATUS_OTHER;
}
public static JsonResult errorExceptoin(String errMessage){
return new JsonResult(STATUS_EXCEPTION,errMessage,null);
}
public static JsonResult ok(Object content){ return new JsonResult(STATUS_OK,"SUCCESS",content);}
public static JsonResult other(String otherMessage){return new JsonResult(STATUS_OTHER,otherMessage,null);}
}
DHGHXLDRConfig代码:
@Configuration
public class DHGHXLDRConfig{
@Value("${dhgh.xlfile}")
private String getXlfilePath(){
return xlfilePath;
}
public String getXlfilePath(){
return xlfilePath;
}
public void setXlfilePath(String xlfilePath){
this.xlfilePath = xlfilePath;
}
}
application.yml需要添加内容:(不在yml里添加上传大小,会使用框架默认值,可能会一起报错,文件过大:)
Spring:
servlet:
multipart:
max-file-size:100Mb
max-request-size:100Mb
dddd:
xlfile:D:/XXX/XXX/XXX
参考文档:https://www.cnblogs.com/chenhonggao/p/8994598.html
学习博客:https://blog.csdn.net/zhaoxiang10052111/article/details/79899284