Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spring框架from表单提交多图到Zimg #115

Open
hjjoe1213123 opened this issue Sep 2, 2015 · 8 comments
Open

Spring框架from表单提交多图到Zimg #115

hjjoe1213123 opened this issue Sep 2, 2015 · 8 comments

Comments

@hjjoe1213123
Copy link

public HttpServletResponse uploadFile(HttpServletRequest request){
    MultipartHttpServletRequest mRequest = null;
    MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());

    // 获取request
    try {
        mRequest = resolver.resolveMultipart(request);
        mRequest.setCharacterEncoding("UTF-8");
    } catch (Exception e1) {
        e1.printStackTrace();
    }

    // 获取文件map
    Map<String, MultipartFile> files = mRequest.getFileMap();

    // 检查是否包含文件信息
    if (null == files || files.size() == 0) {
        System.out.println("图片上传异常");
    }

    String uploadUrl="http://192.168.11.11:4869";
    // 保存文件至服务器指定路径
    String fileName = null;
    for (String key : files.keySet()) {
        MultipartFile file = files.get(key);
        fileName = file.getOriginalFilename();

        String fileType = fileName.substring(fileName.lastIndexOf(".")+1, fileName.length());

        byte[] imgData = null;
        try {
            imgData = file.getBytes();
        } catch (IOException e) {
            e.printStackTrace();
        }

        String retJson = HttpTookit.sendPost(uploadUrl, imgData, fileType);
        //json解析有很多框架,所以不做参考了
        System.out.println(retJson);
    }
    return null;
}

HttpTookit.sendPost方法可以参考#114

@buaazp
Copy link
Owner

buaazp commented Sep 6, 2015

That's good!

@longzhiyou
Copy link

用这种方式每次只能上传一张吗?
我现在只要设置header 为jpg或者其他,返回json是成功,但是直接访问md5就失败。如果不加这个头,返回的是上传的所有图片md5的html,这个时候访问就成功,目前还不清楚原因。

@buaazp
Copy link
Owner

buaazp commented Sep 15, 2015

@longzhiyou 你说的这个情况很奇怪我从未见过,麻烦把两次请求时zimg的log摘出来我看看是什么情况。

@longzhiyou
Copy link

#####前提是相同的一张照片,一个用curl上传,一个用java httpclient上传。
curl-cmd-res
curl-package
httpclient-package
httpclient-res

2015/09/16 10:33:07:844013 [INFO] 192.168.1.229 succ post pic:6fea5aca5c69aac4e76ab4fe82617795 size:82429
2015/09/16 10:38:25:020131 [INFO] 192.168.1.229 succ post pic:ca621fafa37456d6ae478c4004ff0a23 size:82640
先把照片上传一下。

@longzhiyou
Copy link

用抓包软件看到,body中两种方式上传的内容是不同的,后面的我是直接上传的二进制图片,如果我把这个二进制数据直接保存file确定是没有问题的,但是上传后,返回成功,得到的md5是不正确的。

@RobinMeng
Copy link

{"ret":false,"error":{"code":1,"message":"File type not support."}} 什么情况

@likai2016
Copy link

个人建议 在js界面上能不能直接与zimg服务器通信呢,而不是在后台的coller里接受完了在去保存到图片服务器上,因为在[MultipartResolver]的时候,是意味着客户端已经将图片发送到web服务器上(可以查看一下MultipartFile的属性能找到在web服务器的临时目录中)这样是不是性能损耗很多,我目前这个项目做的在js也就是客户端直接与图片服务器进行通信,当然如果有业务需求的话,需要临时图片可以这样做

@hjjoe1213123
Copy link
Author

js可以直接与zimg服务器通信啊,百度有一个webload实现了图片的压缩,与二进制上传

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants