org.springframework.web.multipart.MultipartFile以及类型记录

接口需求是Android/iPhone需要通过接口上传一些文件,例如图片,jar包,rar压缩包,视频,音乐...等!困扰我这个菜鸟很久,整理一下!!分享给同我一样的菜鸟

后台需要处理这些数据,之前没有接触过!但类似的FileUpLoad的插件用过,其实原理差不多,因为计算机原始数据都是01代码,所以只要将这些文件保存成二进制就可以,数据库(mysql),最大4G!!
问题1,如果实现!联调之后共享代码.
问题2,为什么要转为2进制,不直接把上传的文件放在服务器上!
我也请教了别人,首先放在服务器上会很乱,不方便维护!管理不方便,优点当然是不占用数据库资源了(很多时候软件的瓶颈就是数据库的优化).
至于2进制,当然放在数据库里很方便维护,管理!移植,都只需要SQL语句都可以完成,但有个重点是性能问题(内存的占用),如果使用Hibernate的话,需要用懒加载,这样可以保证性能不会很操蛋.
select * from table where id=1
from table where id=1
貌似两个功能是一样的,但是用了懒加载第二个也许在加载数据更快,至于为什么去了解一下懒加载吧!!
问题3,如何选择呢!
如果经常需要访问这个资源,那就直接用文件的形式,缓存资源!!如果不是经常使用可以用二进制.如果你有不同看法,请赐教!!

代码实现!整理中...

public static void main(String[] args) throws Exception {
/**
* 将字符串转换为二进制
*/
String str1 = "我是赵昌文"; //需要转换的字符串
byte[] bys = str1.getBytes("UTF-8"); //将字符串转换为byte数组(GBK...等)
//用来保存UTF-8的byte数据
StringBuffer sb = new StringBuffer();
//用来保存二进制
StringBuffer sb1 = new StringBuffer();

//遍历byte的数据(跟转换无关)
for(int j=0;j<bys.length;j++){
//(j+1)这样在第二次循环j从1开始,j本身不参与("运算"---字符串拼接),可以写j+1试试
//System.out.println("byte(UTF-8)第"+(j+1)+"个"+bys[j]+"转为二进制"+Integer.toBinaryString(bys[j]));
sb.append(bys[j]+",");
sb1.append(Integer.toBinaryString(bys[j])+",");
}
/**
* 将二进制转换回字符串
*/
System.out.println("UTF-8:"+sb);
System.out.println("二进制:"+sb1);

// byte[] b = {-26,-120,-111};
// System.out.println("转换回来!!"+new String(b,"UTF-8"));
}

上面是自己写的一些转换,下边是上传!!

//提交资源保存
@RequestMapping("/saveResource.aa")
public ModelAndView saveResource(@RequestParam("fileParameter") MultipartFile file){
map = new HashMap();
//为false时文件不为空
if(file.getName()!=null&&file.isEmpty()==false){
ResourceImg resource = new ResourceImg();
try {
resource.setBody(Hibernate.createBlob(file.getBytes()));
resource.setMimeType(file.getContentType());
resource.setName(file.getName());
map.put("result",rm.saveResource(resource));
} catch (IOException e) {
e.printStackTrace();
}
return new ModelAndView("jsonView",map);
}else{
map.put("result","null");
return new ModelAndView("jsonView",map);
}
}

保存图片

//将图片存到服务器
@RequestMapping("/imageUpload.aa")
public String processImageUpload(@RequestParam("fileParameter") MultipartFile image) throws IOException {
FileCopyUtils.copy(image.getBytes(),new File("d:/"+image.getOriginalFilename()));
return "imageList";
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
org.springframework.web.multipart.MultipartFile是Spring框架中用于处理文件上传的一个接口,它定义了一系列方法和属性,用于获取和操作上传的文件。它的实现类包括org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.StandardMultipartFile。通过导入org.springframework.web.multipart.MultipartFile这个jar包,我们可以使用MultipartFile接口来实现文件上传功能。在Java中,我们可以利用Spring框架中的MultipartFile接口来实现文件上传操作。例如,通过调用file.transferTo(new File(path))方法,我们可以将上传文件保存到指定的路径中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [上传文件,org.springframework.web.multipart.MultipartFile 为何可重复读(重复获取getInputStream())](https://blog.csdn.net/u013378306/article/details/121135950)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [通过import org.springframework.web.multipart.MultipartFile;上传文件](https://download.csdn.net/download/cocoaxian/9640758)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [java实现文件上传](https://blog.csdn.net/Crezfikbd/article/details/123462617)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值