起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2053|回复: 5

[处理中3] 如何上传设备本地特定图片到服务器

[复制链接]

31

主题

116

帖子

259

积分

中级会员

Rank: 3Rank: 3

积分
259
QQ
发表于 2017-9-12 17:29:45 | 显示全部楼层 |阅读模式
希望上传本地确定图片file:///storage/emulated/0/Android/xxxx/xxx/xxx.jpg到服务器,请教如何实现?

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35878
发表于 2017-9-12 17:36:05 | 显示全部楼层
调用插件上传时传自己的固定路径看看
http://bbs.wex5.com/forum.php?mod=viewthread&tid=68669
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

31

主题

116

帖子

259

积分

中级会员

Rank: 3Rank: 3

积分
259
QQ
 楼主| 发表于 2017-9-13 19:16:29 | 显示全部楼层


下面是负暄分享的代码,看不太懂,搞不明白应如何修改,自己的固定路径改在哪啊?
烦劳老师指导一下,谢谢谢谢!
另外请教图片上传到服务器后URL如何取得?


       //调用bass实现图片上传               
        Model.prototype.uploadPic = function(imageData){
        
                //用户信息,用于上传图片后保存图片链接fImage
                var userid = this._UserID;    //this._UserID是自己定义的变量,在页面打开时被初始化
                var userBaasData = this.comp("userBaasData");
                var storeFileName =  "";
                var imageJson = {};

                storeFileName = justep.UUID.createUUID();                           
               
                justep.Baas.sendRequest({
                "url" : "/summer/classes",  //baas目录,请根据自己的配置进行修改
                "action" : "uploadPicfile",
                "async" : false,
                "params" : {
                        "picData" : imageData,
                        "ownerID" : userid,
                        "storeFileName" : storeFileName
                },
                "success" : function(data) {

                        justep.Util.hint("图片上传成功");

                        //修改数据库中的图片链接     这里我的字段名叫fImage,可以根据自己的字段名修改               
                        userBaasData.setFilter("Idfilter", "fID='"+userid+"'");
                        userBaasData.refreshData();        
                        if(userBaasData.getCount()>0){
                                var fImage = '{"ownerID":"'+userid+'","storeFileName":"'+storeFileName+'"}';

                                userBaasData.setValue("fImage", fImage);
                                userBaasData.saveData();
                        }               
                }
            });

        };        


然后是,后台对应的图片上传baas,将图片保存在UI2/myClassmate/uploadfiles目录下,这里可以自己进行调整:
public static JSONObject uploadPicfile(JSONObject params, ActionContext context) throws SQLException, NamingException, IOException {
                        
                         System.out.println("uploadPicfile is running...");
                        
                        String ownerID = params.getString("ownerID");
                        String storeFileName = params.getString("storeFileName");                        
                        String picData = params.getString("picData");   


             String baasPath = Thread.currentThread().getContextClassLoader().getResource("").getPath()  ;
             String docStorePath = baasPath + ".." + File.separator + ".."+ File.separator + "model" +File.separator + "UI2" +File.separator + "myClassmate" +File.separator+"uploadfiles" ;
             File docstoreDir = new File(docStorePath);
                   if(!(docstoreDir.exists() && docstoreDir.isDirectory())){
                          docstoreDir.mkdirs();
                   }                           

            String storePath = docStorePath + File.separator + ownerID;
                 File storeDir = new File(storePath);
                 if(!(storeDir.exists() && storeDir.isDirectory())){
                         storeDir.mkdirs();
                 }      
                 
                System.out.println("后台计算的baasPath的值:"+ baasPath);
           System.out.println("后台计算的docStorePath的值:"+ docStorePath);  
           System.out.println("后台计算的storeDir的值:"+ storeDir);

             BASE64Decoder decoder = new BASE64Decoder();
             try {                  
                     byte[] decodedBytes = decoder.decodeBuffer(picData);

                     String imgFile = storePath + File.separator + storeFileName;
                     FileOutputStream out = new FileOutputStream(imgFile);
                     out.write(decodedBytes);
                     out.close();
                     System.out.println("图片上传成功!");
             } catch (Exception e) {
                     System.out.println("图片上传失败!");
                     e.printStackTrace();
             }
             return null;
     }
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35878
发表于 2017-9-14 13:57:10 | 显示全部楼层
你要看调用插件获取文件后的路径是自己跟上传赋值的,然后自己修改赋值的地址,这个需要自己里面前后的调用逻辑

而且手机是客户端的你设置固定路径不能保证每个手机上都有这个路径吧
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

31

主题

116

帖子

259

积分

中级会员

Rank: 3Rank: 3

积分
259
QQ
 楼主| 发表于 2017-9-15 13:32:19 | 显示全部楼层
本帖最后由 developerML 于 2017-9-15 13:52 编辑
jishuang 发表于 2017-9-14 13:57
你要看调用插件获取文件后的路径是自己跟上传赋值的,然后自己修改赋值的地址,这个需要自己里面前后的调用 ...

老师,是这样,我只需要实现本手机拍的照片上传到服务器就行,拍照的那个demo能够获得本手机拍的照片存放的本地路径,我现在不知道这个本地路径应该怎么放入负暄分享的代码中
负暄分享的代码好像是拍照和上传同时完成,我需要拍照和上传是独立的,存好的本地路径我已经保存到一个data组件里了,就是不知道怎么用这个路径
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35878
发表于 2017-9-15 15:12:24 | 显示全部楼层
那你可以在拍照成功后不调用上传文件啊
pic.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-3-29 02:26 , Processed in 0.101126 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表