zoukankan      html  css  js  c++  java
  • android多文件上传,java服务端接收

    Android多文件上传,java服务端接收

    1、Android端

    依赖

    compile 'com.squareup.okhttp3:okhttp:3.3.0'

    代码:

    String uploadUrl = "http://xxx/uploadFiles";//上传的接口地址
    List<String> filePaths = "";//上传的Android本地文件地址集合
    // Android 4.0 之后不能在主线程中请求HTTP请求 new Thread(new Runnable() { @Override public void run() { uploadFiles(uploadUrl, filePaths); } }).start(); /** * 多文件上传 * @param uploadUrl 文件上传接口地址 * @param filePaths 上传的文件路径集合 * @return */ public void uploadFiles(String uploadUrl, List<String> filePaths) { MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM); for (int i = 0; i < filePaths.size(); i++) { //对文件进行遍历 String fname = filePaths.get(i); File tempfile = new File(fname); //根据文件的后缀名,获得文件类型 builder.setType(MultipartBody.FORM) .addFormDataPart("id",id)// 其他参数信息 .addFormDataPart( //给Builder添加上传的文件 "files", //请求的名字 tempfile.getName(), //文件的文字,服务器端用来解析的 RequestBody.create(MediaType.parse("multipart/form-data"), tempfile)//创建RequestBody,把上传的文件放入 ); } MultipartBody requestBody = builder.build(); Request request = new Request.Builder() .url(uploadUrl) .post(requestBody) .build(); OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(10000, TimeUnit.SECONDS) .readTimeout(10000, TimeUnit.SECONDS) .writeTimeout(10000, TimeUnit.SECONDS).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { Log.e("TAG", "返回内容===失败>:" + e.toString()); } @Override public void onResponse(Call call, Response response) throws IOException { String result = response.body().string(); Log.e("TAG", "返回内容===成功>:" + result); } }); }

     2、java服务端接收代码

    /**
         * 多文件上传
         * @author qt
         * @param files  上传的文件
         * @param id  其他信息参数
         * @return
         */
        @PostMapping("/uploadFiles")
        @ResponseBody
        public String multiFileUpload( @RequestParam(value = "files")MultipartFile[] files,@RequestParam(value = "id") String id) {
            String servicePath = "/usr/local/files/";//linux服务器的绝对地址
            JSONObject resultObj = new JSONObject();
            if (files.length == 0) {
                resultObj.put("code",201);
                resultObj.put("msg","上传文件为空");
            }else {
                try {
                    for (MultipartFile file : files) {
                        String fileName = file.getOriginalFilename();  // 文件名
                        //获取最后一个.的位置
                        int lastIndexOf = fileName.lastIndexOf(".");
                        //获取文件的后缀名
                        String suffix = fileName.substring(lastIndexOf);
                        //获取文件的前缀名
                        String prefix = fileName.substring(0,lastIndexOf);
                        //给文件重命名
                        String newFileName = prefix + "_" + System.currentTimeMillis() + suffix;
                        //获取文件需要上传到的路径
                        String path = servicePath + newFileName; // 新文件名
                        File dest = new File(path);
                        // 如果文件的父路径不存在,则创建
                        if (fileName.startsWith("/") && !dest.getParentFile().exists()) {
                            dest.getParentFile().mkdirs();
                        }
                        // 开始存放文件到指定目录去
                        file.transferTo(dest);
                    }
                    resultObj.put("code",200);
                    resultObj.put("msg","文件上传成功");
                } catch (IOException e) {
                    e.printStackTrace();
                    resultObj.put("code",201);
                    resultObj.put("msg","文件上传失败");
                }
            }
            return resultObj.toString();
        }

     总结:实践是检验真理的唯一标准。

  • 相关阅读:
    匹配域名
    异步加载js文件
    Python3.X BeautifulSoup([your markup], "lxml") markup_type=markup_type))的解决方案
    CSDNmarkdown编辑器直接写代码的小效果(一生愿)
    JAVA_OA(十四)番外:JAVAWEB防止表单重复提交的方法整合(包括集群部署)
    JAVA_OA(十四):SSM练手项目bug-Oracle分页web页面无法转到下一页
    JAVA_OA(十四):SSM练手项目bug-JSP页面传递参数的编码问题
    JAVA_OA(八):springMVC对JDBC的操作小项目b
    完全卸载oracle11g教程、Oracle11g的卸载方法和步骤
    JAVA_OA(八):springMVC对JDBC的操作小项目a
  • 原文地址:https://www.cnblogs.com/qiantao/p/14789673.html
Copyright © 2011-2022 走看看