资讯专栏INFORMATION COLUMN

多图片上传Android,服务器端实现

liujs / 1663人阅读

摘要:最近时间在做的项目中需要用到前端上传服务器第一次做文件上传的服务器端查了各种资料踩了各种坑记录一下最终的实现方式一服务器端服务器端使用的是框架文件实现逻辑获取用户上传的文件将文件保存到文件夹保存成功后将文件的索引存入数据库获取用户上传的文件

最近时间在做的项目中需要用到Android前端上传服务器,第一次做文件上传的服务器端,查了各种资料,踩了各种坑,记录一下最终的实现方式
**一.服务器端**
    服务器端使用的是ssh框架,文件实现逻辑:
        1.获取用户上传的文件
        2.将文件保存到文件夹
        3.保存成功后将文件的索引存入数据库,
    1.获取用户上传的文件
        完整action如下:
    
public class UploadAction extends ActionSupport implements ModelDriven, ServletResponseAware, ServletRequestAware {
    private HttpServletResponse response;
    private HttpServletRequest request;
    //*********重点******
    // 多文件上传的文件key,相当于获取 request.getParameter(key)
    //如果传入的key不对,上传的文件为空,报空指针异常,
    private List file;

    private List fileFileName;

    private List fileContentType;

    private List dataUrl;

    public void setDataUrl(List dataUrl) {
        this.dataUrl = dataUrl;
    }

    public List getFile() {
        return file;
    }

    public void setFile(List file) {
        this.file = file;
    }

    public List getFileFileName() {
        return fileFileName;
    }

    public void setFileFileName(List fileFileName) {
        this.fileFileName = fileFileName;
    }

    public List getFileContentType() {
        return fileContentType;
    }

    public void setFileContentType(List fileContentType) {

        this.fileContentType = fileContentType;
    }

    private QualityBean bean = new QualityBean();

    public void setBean(QualityBean bean) {
        this.bean = bean;
    }

    public String upload() throws Exception {
        dataUrl = new ArrayList();
        String imgpath = "D:/loadtest";
        System.out.println("file-size" + file.size());
        if (file != null) {
            for (int i = 0; i < file.size(); ++i) {
                InputStream is = new FileInputStream(file.get(i));
                dataUrl.add(imgpath + this.getFileFileName().get(i));
                File destFile = new File(imgpath, this.getFileFileName().get(i));
                OutputStream os = new FileOutputStream(destFile);
                byte[] buffer = new byte[400];
                int length = 0;
                while ((length = is.read(buffer)) > 0) {
                    os.write(buffer, 0, length);
                }
                is.close();
                os.close();
                //往数据库添加--略
                //返回数据,真实项目中返回自己逻辑判断
                BooleanBean bean = new BooleanBean();
                bean.setUpdate(true);
                DataUtils.writeBeanDate(response, bean);
              
            }
        }
        return null;
    }

    @Override
    public void setServletRequest(HttpServletRequest httpServletRequest) {
        this.request = httpServletRequest;
    }

    @Override
    public void setServletResponse(HttpServletResponse httpServletResponse) {
        this.response = httpServletResponse;
    }

    @Override
    public QualityBean getModel() {
        return bean;
    }
}

structs.xml配置如下






    
    
    
    
        
            upload
        
        
            
            
                
                104857600
                
            
            
            
        
    

如果报错如下,则是上传文件超过设置的大小,

**二.Android 端代码实现**

        final List list = new ArrayList<>();
        list.add("/storage/emulated/0/Boohee/1565153408424.jpg");
        list.add("/storage/emulated/0/Boohee/1564797245581.jpg");
        submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Map params = new HashMap<>();
                RequestBody pictureNameBody = RequestBody.create(MediaType.parse("multipart/form-data"), "file");
                for (String str : list) {
                    File picture = new File(str);
                    RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), picture);
                    params.put("file"; filename="" + picture.getName() + "", requestFile);
                }
                mvpPresenter.submit("韶关1店",pictureNameBody, params);
            }
        });

上面file作为文件上传的key,两端必须保持一致

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75987.html

相关文章

  • 精彩文章大合集- 收藏集 - 掘金

    摘要:发布应用市场的平台抢红包工具红包精灵开源啦掘金红包精灵,如果喜欢,点个开源不易。作者将原素材文章进行了新内容的添加和重新排列,但是因为文章高效的代码编写技巧总结前端掘金本文总结了代码编写技巧,来提升你的和代码。 收藏安卓开发中非常实用优秀的库! 有图有真相! - Android - 掘金本来是打算收藏工具类的,但转念一想,已经有这么多优秀的库了,就没必要再去重复造轮子了,便归纳工作中比...

    ermaoL 评论0 收藏0
  • 移动上传图片翻转的解决方案

    摘要:后续过了几天,公司购置了几台全新的测试机,测试同学将系统在一台三星的机子上一测,又发现新问题了选择完图片进行本地预览时,发现图片翻转了但上传后再展示又是正常的。 最近在处理移动端选择图片实时预览并上传时遇到一个问题:上传前图片预览正常,但上传到服务器上的图片展示到页面上时,有时会出现图片翻转的问题,一般是翻转 90 度。后经一翻研究找到了问题所在,特在此记录一下。 问题描述 接上面提到...

    shinezejian 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<