如何在前端选择本地图片并上传

版权声明:路漫漫其修远兮,吾将上下以求索。 https://blog.csdn.net/qq_38005982/article/details/78284672

      好懒。。。。。

     先写前端的,比较简易的标准照片上传方法

      <input id="ss" name="ss" type="file"/>      //这里就这一句就可以了

这是一个可以上传照片的input,主要在于它的type是file   具体样式大家自己写一个试试就知道了

    在这里给大家一个小方式,如果你想一次上传多张,但又不想让他们的input全部都显示     请参考

假设再有一个ss2的input

   $("#ss2").hide();   //先定义ss2为隐藏状态

  $("#ss").change(function(){ //当ss的值发生变化时  change()事件  

        $("#ss2").show();   //将ss2显示

})

      当然了。。。我这个input是放在表单里的





后台代码:

在方法里如下:

    // 转型为MultipartHttpRequest

     MultipartHttpServletRequest multipartRequest =(MultipartHttpServletRequest) request;


   // 获得文件

   MultipartFile file = multipartRequest.getFile("ss");   //这里就是获取你所提交的文件,但是请注意这里接受的都是临时文件,属于不可以打开的后期会有转换的方法


  // 字节型准备接收

  byte[] ss = null;


 //读取文件所需的

  CommonsMultipartFile cf = (CommonsMultipartFile) file


  //获取文件的名字,这是获取的真实文件名,不是自定义的

  String fileName = file.getOriginalFilename();


  //tomcat的路径获取方式

File pathObject = new File(request.getSession().getServletContext().getRealPath("/images/" + 我自定义个文件夹名));    //具体那一部分是我就不太晓得了,建议自己亲测,但是肯定能到tomcat的工作空间,我在这里是获得该工作空间下的images这个文件夹下的我自定义文件夹


//这是我自己的工作流程,,判断该文件夹是否存在(images是肯定存在的,主要是判断我自定义的)

boolean sss = pathObject.exists();


//正餐来了

// 准备存入    将文件转换
   InputStream is = file.getInputStream();


// 获取文件长度

ss = new byte[(int) file.getSize()];


// 接收

is.read(ss);


//关闭流

is.close();


// 找到临时文件存放点(不要忘记我说的,因为在后台接收如果你不转换就只能拿到临时文件)

DiskFileItem fi = (DiskFileItem) cf.getFileItem();


// 转换成文件(在这里还是临时文件,临时文件想要转成文件要么转换,要不改文件后缀名,知道为啥我在前面要获取文件的真实名了么)

File f = fi.getStoreLocation();


//这一步我就不写了,这不是真实文件的转换,在这里我定义了文件的存储路径和文件名,不想用原文件名的,请截取获得后缀再添加

File ff=new File(                       );   //当然这一步只是定义了路径和文件名,还没有创建


f.renameTo(ff);   这一句就是临时文件转换成文件


is.close();  这里这个关闭流。。。我也不知道咋写的,因为我是三个文件上传,有一口气传三个的判断,有传1,2,3的判断,结果把流玩坏了,我也不知道咋放了,请多试试


f.delete();    删除临时文件    因为我要存在工作空间,怕影响运行,临时文件都是删除的

猜你喜欢

转载自blog.csdn.net/qq_38005982/article/details/78284672
今日推荐