android代码:
package heath.com.microchat.utils;import android.util.Log;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.HttpVersion;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.mime.MultipartEntity;import org.apache.http.entity.mime.content.ContentBody;import org.apache.http.entity.mime.content.FileBody;import org.apache.http.entity.mime.content.StringBody;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.params.CoreProtocolPNames;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;import java.io.File;import java.nio.charset.Charset;import java.util.List;import heath.com.microchat.service.ServiceRulesException;public class UploadServerUtils {    public static String uploadLogFile(String uploadUrl, String filePath, String folderPath) {        String result = null;        try {            HttpClient hc = new DefaultHttpClient();            hc.getParams().setParameter(                    CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);            HttpPost hp = new HttpPost(uploadUrl);            File file = new File(filePath);            final MultipartEntity entity = new MultipartEntity();            ContentBody contentBody = new FileBody(file);            entity.addPart("file", contentBody);            entity.addPart("folderPath", new StringBody(folderPath, Charset.forName("UTF-8")));            hp.setEntity(entity);            HttpResponse hr = hc.execute(hp);            HttpEntity he = hr.getEntity();            int statusCode = hr.getStatusLine().getStatusCode();            if (statusCode != HttpStatus.SC_OK)                throw new ServiceRulesException(Common.MSG_SERVER_ERROR);            result = EntityUtils.toString(he, HTTP.UTF_8);        } catch (Exception e) {            e.printStackTrace();            Log.e("TAG", "文件上传失败!上传文件为:" + filePath);            Log.e("TAG", "报错信息toString:" + e.toString());        }        return result;    }    public static String uploadLogFiles(String uploadUrl, List filePaths, String folderPath) {        String result = null;        try {            HttpClient hc = new DefaultHttpClient();            hc.getParams().setParameter(                    CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);            HttpPost hp = new HttpPost(uploadUrl);            final MultipartEntity entity = new MultipartEntity();            for (String filePath:filePaths){                File file = new File(filePath);                ContentBody contentBody = new FileBody(file);                entity.addPart("files", contentBody);            }            entity.addPart("folderPath", new StringBody(folderPath, Charset.forName("UTF-8")));            hp.setEntity(entity);            HttpResponse hr = hc.execute(hp);            HttpEntity he = hr.getEntity();            int statusCode = hr.getStatusLine().getStatusCode();            if (statusCode != HttpStatus.SC_OK)                throw new ServiceRulesException(Common.MSG_SERVER_ERROR);            result = EntityUtils.toString(he, HTTP.UTF_8);        } catch (Exception e) {            e.printStackTrace();            Log.e("TAG", "文件上传失败!上传文件为:" + filePaths.toString());            Log.e("TAG", "报错信息toString:" + e.toString());        }        return result;    }}

 后台代码及环境:

环境:tomcat8.5及以上,需要commons-fileupload-1.3.1.jar、commons-io-2.4.jar两个jar包;

本上传使用SSM框架,所以在springmvc.xml文件配置:

后台代码:

本上传示例,本人使用的是前端传入上传路劲,不在后台定死路劲。

package org.heath.controller;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.heath.utils.RandomCode;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import net.sf.json.JSONArray;@Controller@RequestMapping("upload")@ResponseBodypublic class UploadController {        @RequestMapping("fileUpload.action")    private String fileUpload(HttpServletRequest request, @RequestParam("file") MultipartFile file, @RequestParam("folderPath") String folderPath) throws IOException {        String fileName = "error";        try {            fileName = file.getOriginalFilename();            fileName = "MicroChat_" + RandomCode.getRandomCode() + "_" + fileName;            folderPath = request.getServletContext().getRealPath(folderPath);            InputStream input = file.getInputStream();            File folder = new File(folderPath);            judeDirExists(folder);            OutputStream outputStream = new FileOutputStream(                    folderPath + File.separator + fileName);            byte[] b = new byte[1024];            while ((input.read(b)) != -1) {                outputStream.write(b);            }            input.close();            outputStream.close();            return fileName;        } catch (Exception e) {            e.printStackTrace();            return "error";        }    }        @RequestMapping("filesUpload.action")    private Map filesUpload(HttpServletRequest request, @RequestParam("files") MultipartFile[] files, @RequestParam("folderPath") String folderPath) throws IOException {        JSONArray fileNames = new JSONArray();        Map returnMap = new HashMap();        folderPath = request.getServletContext().getRealPath(folderPath);        try {            for (int i = 0; i < files.length; i++) {                String fileName = files[i].getOriginalFilename();                fileName = "MicroChat_" + RandomCode.getRandomCode() + "_" + fileName;                InputStream input = files[i].getInputStream();                File folder = new File(folderPath);                judeDirExists(folder);                OutputStream outputStream = new FileOutputStream(                        folderPath + File.separator + fileName);                byte[] b = new byte[1024];                while ((input.read(b)) != -1) {                    outputStream.write(b);                }                input.close();                outputStream.close();                fileNames.add(fileName);            }            returnMap.put("code", "200");            returnMap.put("msg", "success");            returnMap.put("fileNames", fileNames);            return returnMap;        } catch (Exception e) {            e.printStackTrace();            returnMap.put("code", "414");            returnMap.put("msg", "error");            return returnMap;        }    }    // 判断文件夹是否存在    public static void judeDirExists(File file) {        if (file.exists()) {            if (file.isDirectory()) {                System.out.println("dir exists");            } else {                System.out.println("the same name file exists, can not create dir");            }        } else {            System.out.println("dir not exists, create it ...");            file.mkdir();        }    }}

文件及jar下载地址:https://download.csdn.net/download/qq_32090185/10930145

有不懂的地方,可以留言,我看到会进行回复。

更多相关文章

  1. android访问电话号码和电子邮箱
  2. android studio   Listview简单实例
  3. android CVE 漏洞汇总
  4. qemu 0.9.1 与 android 环境编译
  5. android 代码设置间距
  6. Android屏蔽Home键
  7. Android获取基站坐标代码
  8. Android(安卓)静默安装apk
  9. 学习日记-- Android写文件到SDCard的代码

随机推荐

  1. Android视图绘制流程完全解析,带你一步步
  2. Android(安卓)自定义组合控件
  3. 【Android自动化打包】03. APK的数字签名
  4. 一场关于Android的争论
  5. Android(安卓)开机启动应用
  6. Android调用WebService系列之封装能力
  7. adb通过TCP/IP来调试Android设备
  8. 2016这一年,回顾我们一起走过的"编码美丽"
  9. Unity导出android工程集成到android stud
  10. Android版本管理解决方法小议