当前位置:   article > 正文

上传图片文件遇到的文件损坏问题_openfen 传输multipartfile 图片打不开了

openfen 传输multipartfile 图片打不开了

上传图片文件遇到的文件损坏问题

以前我记录过 上传文件的方法,那是相当于字符流的方式复制一份文件存在我想要存文件的地方,这次先搞图片上传的时候先前也准备使用这个方法的,但不幸的是,这种方式不适合图片! 原因在:
字符流主要针对一些文本文档(比字节流操作的效率要高),比如.txt、.doc,而pdf就不行。
则:
你若还想使用流的方式去处理文件上传操作的话,你可能需要用到字节流,
字节流几乎可以对任何文件类型进行操作,主要是对非文件类型的,如媒体文件(音频,视频,图片…);
然而我并不想将字节流,在这里提一下只是告诉你们有这回事…

我的推荐

MultipartFile中的void transferTo(File dest) throws IOException, IllegalStateException;
这次我推荐一个api哈!
前端js什么的就不提供了,实在要看的话,走你,看我以前的上传文件

 @RequestMapping ("/uploadFile")
    @ResponseBody
    public String doUploadMapFile (@RequestParam (value = "uploadfile", required = false) MultipartFile uploadfile,
                                   HttpServletRequest request)
    {

        Map <String, Object> data = new HashMap <String, Object> ();
        boolean result = Boolean.TRUE;
        // 定义容器接收文件名
        String uploadFileName = null;
        // 服务器存放改文件的文件名
        String newUploadFileName = null;
        // 文件保存路径
        String filePath = null;
        String visitUrl = null;
        String savePath = null;
        //String savePath ="D:\\CXAPP\\CXHOME\\sys\\tx\\resource\\";
        //String visitUrl ="http://localhost:8080/resource/";
        try
        {
            // 头像图片保存路径
            savePath = PropertiesUtils.getPropertiesFromPlatform ("tx", "img_save_path");
            // 头像图片访问路径
            visitUrl = PropertiesUtils.getPropertiesFromPlatform ("tx", "img_visit_path");
            // 获取上传文件名(带格式)
            uploadFileName = uploadfile.getOriginalFilename ();
            // 获取最后"."的位置
            int lastIndex = uploadFileName.lastIndexOf (".");
            // 获取上传文件的格式
            String fileType = uploadFileName.substring (lastIndex, uploadFileName.length ());
            // 以当前系统毫秒值为新文件名
            newUploadFileName = String.valueOf (System.currentTimeMillis ()) + fileType;
            File mkdir = new File (savePath + Constant.IMG_FOLDER);
            if (!mkdir.exists ())
            {
                mkdir.mkdirs ();
            }
            filePath = savePath + Constant.IMG_FOLDER + File.separator + newUploadFileName;
            File date = new File (filePath);
            uploadfile.transferTo (date);
        }
        catch (Exception e)
        {
            result = Boolean.FALSE;
            data.put ("errorMsg", "文件上传失败!");
        }
        data.put ("success", result);
        data.put ("resultMsg", uploadFileName + "上传成功!");
        data.put ("imgAddress", Constant.IMG_FOLDER + "/" + newUploadFileName);
        data.put ("visitImgAddress", visitUrl + Constant.IMG_FOLDER + "/" + newUploadFileName);
        String jsonStr = JSONObject.fromObject (data).toString ();
        return jsonStr;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

只有一个重点:uploadfile.transferTo (date);
这里它会把你接受的上传文件放到你前面定义的文件里去的.

该方法中用到的jar包及提示

提示:
前面的 // 头像图片保存路径
savePath = PropertiesUtils.getPropertiesFromPlatform (“tm”, “tm_img_save_path”);
// 头像图片访问路径
visitUrl = PropertiesUtils.getPropertiesFromPlatform (“tm”, “tm_img_visit_path”);
是从配置文件中获取资源,你们若没有使用重配置中获取的话,把路径写成常量或者变量都行,比如:
String savePath =”D:\CXAPP\CXHOME\sys\tx\resource\”;
String visitUrl =”http://localhost:8080/resource/”;
jar包:
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import net.sf.json.JSONObject;
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号