帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
131
帖子
0
勋章
2818
Y币

[App引擎] api.ajax上传多张图片服务端只收到最后一张图

[复制链接]
发表于 2015-9-6 22:11:33
本帖最后由 wwwgying 于 2015-9-7 21:57 编辑

api.ajax上传多张图片服务端只收到最后一张图
  1. files:{}            //以表单方式提交文件,支持多文件上传(JSON对象),如 {"field1": "filepath1", "field2": "filepath2"},也支持同一字段对应多文件:{"file":["filepath1","filepath2"]}
复制代码
IMG_1509.JPG

服务端只收到一张图:
  1. writeLog(json_encode($_FILES));
  2. {"file":{"name":"YY55bb3e56e4b01b460478c5aa_icon.png","type":"image\/png","tmp_name":"\/tmp\/php2NE7Mz","error":0,"size":23329}<span style="line-height: 1.5;">         </span>
复制代码
  1.     /**
  2.      * 写日志
  3.      *
  4.      * @param unknown $content            
  5.      */
  6.     function writeLog($content)
  7.     {
  8.         $nowtime=date("Y-m-d H:i:s",time());
  9.         $content="[$nowtime]$content \r\n";
  10.         file_put_contents('./log.txt',$content,FILE_APPEND);
  11.     }
复制代码


http://docs.apicloud.com/%E7%AB%AFAPI/api#3


20
帖子
1
勋章
7575
Y币
本帖最后由 常山赵子云 于 2015-9-7 21:36 编辑

你的文件组的name要带[],标识这是一个文件数组。api.ajax提交文件组其原理跟网页form表单提交多文件一致:
  1. <html>
  2. <head>
  3. <meta charset="utf-8">
  4. <title>多个文件上传表单</title></head>
  5. <body>
  6. <form action="http://app**.**" method="post" enctype="multipart/form-data">
  7. <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
  8. 选择文件1:<input type="file" name='myfile[]'><br>
  9. 选择文件2:<input type="file" name='myfile[]'><br>
  10. 选择文件3:<input type="file" name='myfile[]'><br>
  11. <input type="submit" value="上传文件">
  12. </form>
  13. </body>
  14. </html>
复制代码


如以上html代码中的form表单就是提交一个文件组,请注意其中file标签的name命名的特殊之处:myfile[],后边跟了中括号,标识所有叫myfile[]的,都将以合并到数组的方式提交给服务器,在你的服务器中,接受到文件时,myfile字段将对应一个数组。

那么该段html代码对应api.ajax则为:
  1. {"myfile[]": ["filepath1","filepath2"]}
复制代码

,也就是说,对应文件组时,该文件组的key,一定要带中括号[]。
131
帖子
0
勋章
2818
Y币
本帖最后由 技术支持-M 于 2015-9-9 21:44 编辑

是自己的服务器,android
84
帖子
2
勋章
1486
Y币
前端代码怎么写的
5
帖子
0
勋章
1万+
Y币
反馈了
131
帖子
0
勋章
2818
Y币
本帖最后由 wwwgying 于 2015-9-7 18:19 编辑
小草 发表于 2015-9-7 18:13
前端代码怎么写的

就是api.ajax提交,这个问题我发现其它帖子有人也在说:https://community.apicloud.com/b ... 6%E4%B8%8A%E4%BC%A0
  1. files:{}            //以表单方式提交文件,支持多文件上传(JSON对象),如 {"field1": "filepath1", "field2": "filepath2"},也支持同一字段对应多文件:{"file":["filepath1","filepath2"]}
复制代码


84
帖子
2
勋章
1486
Y币
wwwgying 发表于 2015-9-7 18:17
就是api.ajax提交,这个问题我发现其它帖子有人也在说:https://community.apicloud.com/bbs/search.php?mo ...

还是想看看你的实现,和代码的写法,是否有误
131
帖子
0
勋章
2818
Y币
本帖最后由 wwwgying 于 2015-9-7 19:40 编辑
小草 发表于 2015-9-7 19:05
还是想看看你的实现,和代码的写法,是否有误

网络请求方法封装了一下,代码文件和变量交叉比较多,上面能看到手机提交的是4张图片,服务端读取打印日志所有文件只有一个。
131
帖子
0
勋章
2818
Y币
小草 发表于 2015-9-7 19:05
还是想看看你的实现,和代码的写法,是否有误

你们可以用UIMediaScanner一次获取多张图片上传测试一下,这个bug是存在的,一开始我们也以为是自己代码的问题,打印上面的日志证明是apicloud的bug
3
帖子
0
勋章
126
Y币
wwwgying 发表于 2015-9-7 19:48
你们可以用UIMediaScanner一次获取多张图片上传测试一下,这个bug是存在的,一开始我们也以为是自己代码 ...

楼主,这个问题解决了吗?碰到了同样的问题···求帮助
12下一页
您需要登录后才可以回帖 登录

本版积分规则