FILE,id不一致

时间:2022-02-16 09:42:18

FILE,id不一致

当图片全部是新增的时候,id和FILE一一对应,后台可以匹配处理。

array(1) {
["banner_img"] => array(5) {
["name"] => array(2) {
[0] => string(5) "2.png"
[1] => string(5) "1.png"
}
["type"] => array(2) {
[0] => string(9) "image/png"
[1] => string(9) "image/png"
}
["tmp_name"] => array(2) {
[0] => string(14) "/tmp/phpO7u01p"
[1] => string(14) "/tmp/phpQZJc7O"
}
["error"] => array(2) {
[0] => int(0)
[1] => int(0)
}
["size"] => array(2) {
[0] => int(176795)
[1] => int(150598)
}
}
}
array(2) {
["pid"] => string(1) "8"
["banner_id"] => array(2) {
[0] => string(0) ""
[1] => string(0) ""
}
}

但是,当图片是修改的时候,有些图片并不需要重新传图,于是就无法一一对应了。比如:

array(1) {
["banner_img"] => array(5) {
["name"] => array(2) {
[0] => string(5) "2.png"
[1] => string(5) "2.png"
}
["type"] => array(2) {
[0] => string(9) "image/png"
[1] => string(9) "image/png"
}
["tmp_name"] => array(2) {
[0] => string(14) "/tmp/phpbmHWr5"
[1] => string(14) "/tmp/phphRfcX9"
}
["error"] => array(2) {
[0] => int(0)
[1] => int(0)
}
["size"] => array(2) {
[0] => int(176795)
[1] => int(176795)
}
}
}
array(3) {
["pid"] => string(2) "10"
["banner_id"] => array(4) {
[0] => string(1) "1"
[1] => string(1) "2"
[2] => string(0) ""
[3] => string(0) ""
}
["banner_img"] => array(2) {
[0] => string(0) ""
[1] => string(0) ""
}
}

有一种办法,就是新图单独组合到banner_img数组中。老图单独处理。

array(2) {
["banner_img_1"] => array(5) {
["name"] => string(5) "3.png"
["type"] => string(9) "image/png"
["tmp_name"] => string(14) "/tmp/phpo2sq7A"
["error"] => int(0)
["size"] => int(171795)
}
["banner_img"] => array(5) {
["name"] => array(2) {
[0] => string(5) "2.png"
[1] => string(5) "2.png"
}
["type"] => array(2) {
[0] => string(9) "image/png"
[1] => string(9) "image/png"
}
["tmp_name"] => array(2) {
[0] => string(14) "/tmp/phpbR50hb"
[1] => string(14) "/tmp/phpPvrGsL"
}
["error"] => array(2) {
[0] => int(0)
[1] => int(0)
}
["size"] => array(2) {
[0] => int(176795)
[1] => int(176795)
}
}
}
array(3) {
["pid"] => string(2) "10"
["banner_id"] => array(4) {
[0] => string(1) "1"
[1] => string(1) "2"
[2] => string(0) ""
[3] => string(0) ""
}
["banner_img_2"] => string(0) ""
}

这里id为1的修改了,id为2的图片没有变动。剩下的两个是新图,跟banner_img中的数据一一对应。

/**
* 保存步骤二
*/
public function save_step_2() {
// 先删除之前的Banner图
M()->startTrans();
$error_count = 0; $pid = $_POST['pid'];
$product_banner = M('product_banner');
$product_banner->where(['pid'=>$pid])->save(['status'=>0]); $temp_all_file = $_FILES;
$temp_new_file = $_FILES['banner_img'];
unset($_FILES);
$temp_banner_id = $_POST['banner_id'];
$cursor_new = 0;
foreach ($temp_banner_id as $k=>$v) {
// 重置$data数据
$data = [];
if ($v) { // 修改
// 可能传图,也可能未传图
if ($temp_all_file['banner_img_'.$v]) { // 传图了
$_FILES['banner_img'] = $temp_all_file['banner_img_'.$v];
$file = $this->upload(1,750,750,'banner_img','banner_img');
$data['img_url'] = $file['save_name'];
if(!$data['img_url']) {
$error_count ++;
break;
}
}
$data['pid'] = $pid;
$data['status'] = 1;
$edit_flag = $product_banner->where(['id'=>$v])->save($data);
if (!$edit_flag && $edit_flag !==0 ) {
$error_count ++;
break;
} } else { // 新增,变更游标
$file_up = array();
$file_up['name'] = $temp_new_file['name'][$cursor_new];
$file_up['type'] = $temp_new_file['type'][$cursor_new];
$file_up['tmp_name'] = $temp_new_file['tmp_name'][$cursor_new];
$file_up['error'] = $temp_new_file['error'][$cursor_new];
$file_up['size'] = $temp_new_file['size'][$cursor_new];
$_FILES['banner_img'] = $file_up; $file = $this->upload(1,750,750,'banner_img','banner_img');
$data['img_url'] = $file['save_name']; if(!$data['img_url']) {
$error_count ++;
break;
} $data['pid'] = $pid;
$data['create_time'] = time();
$data['status'] = 1;
$add_flag = $product_banner->add($data);
if (!$add_flag) {
$error_count ++;
break;
}
unset($_FILES, $file_up);
$cursor_new ++;
}
} if($error_count > 0){
M()->rollback();
$this->json->setErr(10099, '操作失败');
$this->json->Send();
}else{
M()->commit();
$this->json->setErr(0, '操作成功');
$this->json->setAttr('pid', $pid);
$this->json->Send();
}
}

至此,巧妙的处理了FILE与id不对应的问题。

FILE,id不一致的更多相关文章

  1. <input type="file" id="camera" multiple="multiple" capture="camera" accept="image/*"> 上传图片,手机调用相册和摄像头

    <input type="file" id="camera" multiple="multiple" capture="ca ...

  2. 【翻译自mos文章】对于每个文件的 file&period;id and file&period;incarnation number,重命名文件别名

    对于每个文件的 file.id and file.incarnation number,重命名文件别名 參考原文: Rename Alias of Datafile as Per file.id an ...

  3. &lt&semi;input type&equals;&quot&semi;file&quot&semi; id&equals;&quot&semi;fileID&quot&semi;&gt&semi;文本框里的值清空方法

    一般情况下,不允许通过脚本来对文件上传框赋值. 下面是一个变通的方法.就是创建一个新的input type="file" 把原来的替换掉. <!DOCTYPE html PU ...

  4. 关于Webdriver自动化测试时,页面数据与数据库id不一致的处理方式,需要使用鼠标事件

    有时候Web页面需要通过onmouseout事件去动态的获取数据库的数据,在使用Webdriver进行自动化测试的时候,对于页面显示的数据,其在数据库可能会存在一个id或者code,但是id或者cod ...

  5. hadoop中集群节点ID不一致( java&period;io&period;IOException&colon; Incompatible clusterIDs )

  6. JS调用activeX实现浏览本地文件夹功能 wekit内核只需要&lt&semi;input type&equals;&quot&semi;file&quot&semi; id&equals;&quot&semi;files&quot&semi; name&equals;&quot&semi;files&lbrack;&rsqb;&quot&semi; webkitdirectory&sol;&gt&semi;即可,IE内核比较麻烦

    研究了一天,js访问本地文件本身是不可能的,只能借助于插件.植入正题,IE仅支持ActiveX插件. function openDialog() { try { var Message = &quot ...

  7. 自定义input&lbrack;type&equals;&quot&semi;file&quot&semi;&rsqb;的样式

    input[type="file"]的样式在各个浏览器中的表现不尽相同: 1. chrome: 2. firefox: 3. opera: 4. ie: 5. edge: 另外,当 ...

  8. input&lbrack;tyle&equals;&quot&semi;file&quot&semi;&rsqb;样式修改及上传文件名显示

    默认的上传样式我们总觉得不太好看,根据需求总想改成和上下结构统一的风格…… 实现方法和思路: 1.在input元素外加a超链接标签 2.给a标签设置按钮样式 3.设置input[type='file' ...

  9. 前端开发:css技巧,如何设置select、radio 、 checkbox 、file这些不可直接设置的样式 。

    前言: 都说程序员有三宝:人傻,钱多,死得早.博主身边的程序“猿”一大半应了这三宝,这从侧面说明了一个问题,只有理性是过不好日子的.朋友们应该把工作与生活分开,让生活变得感性,让工作变得理性,两者相提 ...

随机推荐

  1. WCF学习之旅—WCF4&period;0中的简化配置功能(十五)

    六 WCF4.0中的简化配置功能 WCF4.0为了简化服务配置,提供了默认的终结点.绑定和服务行为.也就是说,在开发WCF服务程序的时候,即使我们不提供显示的 服务终结点,WCF框架也能为我们的服务提 ...

  2. Android开发学习—— 下载网络图片

    现在几乎所有的应用都在使用网络来达到浏览的目的.对于特定领域 使用xnpp协议 像即时通讯软件.但大多数还是使用HTTP协议来交互. 网络图片查看器 HTTP协议 下载网络 图片 <Relati ...

  3. Java知识结构

  4. Oracle资源

    ORACLE 10g下载地址 oracle 下载还需要用户名我自己注册了个方便大家使用下载 user:1603869780@qq.compass:qwe123QWE现在直接点击不能下载了 要经过ora ...

  5. SQL Server临界点游戏——为什么非聚集索引被忽略!

    当我们进行SQL Server问题处理的时候,有时候会发现一个很有意思的现象:SQL Server完全忽略现有定义好的非聚集索引,直接使用表扫描来获取数据.我们来看看下面的表和索引定义: CREATE ...

  6. 5-Highcharts曲线图之轴反转

    <!DOCTYPE> <html lang='en'> <head> <title>5-Highcharts曲线图之轴反转</title> ...

  7. jQuery 获取父元素、子元素、同级元素

    详情:http://www.w3school.com.cn/jquery/jquery_traversing_ancestors.asp   parent() 方法返回被选元素的直接父元素.(常用) ...

  8. XPath语法

    XPath 是XML 的查询语言,和SQL 的角色很类似.以下面XML 为例,介绍XPath 的语法 <?xml version="1.0" encoding="I ...

  9. 关于eclipse创建Maven项目创建的问题

    1.问题: 为什么Maven Update Project JDK变回1.5 解释:官方文档 The Compiler Plugin is used to compile the sources of ...

  10. jquery pjax 用法总结

    以前我们点击a链接的时候总是会刷新整个页面并跳转到新页面,中间可以很明显的看到短暂的白屏.pjax就很好的解决了这问题. pjax的原理很简单,就是发送一个ajax请求,获取html代码,再把相关代码 ...