解决对接淘宝开放平台添加商品图片问题
问题
之前工作因队友离开,只一天接手其部分且第二天就要上线此工具产品,测试提了一些Bug,在Bug中有一个是添加商品图片。前端告知不能用、电话离职队友说能用。没办法自己上、追踪代码。
en这块代码跟需求好像不太相符,重写。
淘宝开放平台文档中心:开放平台-文档中心
请求示例:
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
PictureCategoryGetRequest req = new PictureCategoryGetRequest();
req.setPictureCategoryId(100L);
req.setPictureCategoryName("分类");
req.setType("1");
req.setParentId(0L);
req.setModifiedTime(StringUtils.parseDateTime("2011-01-01 11:11:11"));
PictureCategoryGetResponse rsp = client.execute(req, sessionKey);
System.out.println(rsp.getBody());
解决
一开始想着用流直传过去试试。
req.setImg(new FileItem("", file.getBytes()));
不行。
换个思路,先上传到服务器再上传到淘宝。
file.transferTo(new File(allPath));
上传到服务器ok,上传到淘宝不行。
直接用队友的封装的
PictureUtils.downloadPicture(url, filePath);
不行。
自己封装了一个工具类。上传到服务器ok,上传到淘宝不行。
同事帮提供了一个工具。
public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {File targetFile = new File(filePath);if(!targetFile.exists()){targetFile.mkdirs();}try (FileOutputStream out = new FileOutputStream(filePath + fileName)) {out.write(file);out.flush();out.close();}
}
上传到服务器也ok,上传到淘宝不行。
想着可能是提供的PictureCategoryId值有点问题,重新要值和ok的图片,都行。
把这部分的代码封装到Service,结果报错。算了,就放Controller层。
@PostMapping(value = "/upload/img",name = "添加天猫商品图片")
public JSONResult uploadImg(@RequestParam("file") MultipartFile file) {String fileName = file.getOriginalFilename();String filePath = "/www/pictures/";//String filePath = "D:\\picture\\";String allPath = filePath + fileName;try {FileUtil.uploadFile(file.getBytes(), filePath, fileName);//这里视情况可不做校验/*String suffix = Objects.requireNonNull(file.getOriginalFilename()).substring(file.getOriginalFilename().lastIndexOf(".") + 1, file.getOriginalFilename().length());if (!"jpg,jpeg,gif,png".toUpperCase().contains(suffix.toUpperCase())) {return JSONResult.error("请选择jpg,jpeg,gif,png格式的图片");}*/Path path = Paths.get(allPath);if (Files.exists(path)) {PictureUploadResponse rsp = taobaoSetvice.pictureUpload(allPath);log.info( "rsp::" + JSON.toJSONString(rsp));if(rsp.isSuccess()){return JSONResult.success(rsp.getPicture().getPicturePath());}return JSONResult.error(rsp.getSubMsg());}return JSONResult.success("文件已存在");} catch (Exception e) {return JSONResult.error("上传失败");}
}
return JSONResult.error(rsp.getSubMsg());这里因为淘宝那边有校验结果,所以直接返回。
同事建议说在后端对图片做调整处理成符合淘宝的图片,个人觉得在前端调整处理比较合适、所见即所得。
打包部署联调ok后想想,是不是PictureCategoryId值和图片导致的上传到服务器ok、上传到淘宝不行?当时ld只给一天时间解决这些问题没时间紧搞,就这样先了。跟对ld还是挺重要的,1天接手和解决别人的工作、3天开发上线带后台小程序等还是挺搞人。
相关文章:
解决对接淘宝开放平台添加商品图片问题
问题 之前工作因队友离开,只一天接手其部分且第二天就要上线此工具产品,测试提了一些Bug,在Bug中有一个是添加商品图片。前端告知不能用、电话离职队友说能用。没办法自己上、追踪代码。 en这块代码跟需求好像不太相符,重写。 …...
总结:Spring创建Bean循环依赖问题与@Lazy注解使用详解
总结:Spring创建Bean循环依赖问题与Lazy注解使用详解 一前提知识储备:1.Spring Bean生命周期机制(IOC)2.Spring依赖注入机制(DI)(1)Autowired注解标注属性set方法注入(2&…...
Mac下java环境搭建
JDK 教程:MAC安装JDK及环境变量配置-CSDN博客 建议JDK7和JDK8都装上,因为一些老项目是用JDK7开发,使用JDK8编译时报错。(若没有老项目,直接安装jdk8) 若配置环境变量时找不到JDK的安装路径,有两种方式: 方式一、mac默认位置为:/Library/Java/JavaVirtualMachines/…...
mac设置java环境变量
在 macOS 系统上,设置 JAVA_HOME 环境变量可以通过以下步骤进行: 打开终端应用程序。 输入以下命令来查找 Java 的安装路径:/usr/libexec/java_home 终端会返回 Java 的安装路径,类似 /Library/Java/JavaVirtualMachines/jdk1.…...
【笔记】Android 漫游定制SPN定制有关字段
一、SPN模块简介 【笔记】SPN和PLMN 运营商网络名称显示 Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍 【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag) 二、相关配置字段 non_roaming_operator_string_array 是否…...
【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型
【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型 Shepard模型(简称SP模型)就是一种直观的、可操作的相似预测法,常用于插值。相似预测法基本原理按照相似原因产生相似结果的原则,从历史样本中集中找出与现在的最相似的一…...
python工具方法 47 基于paddleseg将目标检测数据升级为语义分割数据
在进行项目研究时,通常需要搜集开源数据集。但是所能搜集到的数据集通常会存在形式上的差异,比如我想要的是语义分割数据,而搜集到的数据集却是目标检测数据;在这种情况下所搜集的数据就完成没有利用价值了么?不,其还存在价值,我们可以通过模型训练对数据标签的标注粒度…...
OpenJudge - 38:计算多项式的导函数
总时间限制: 1000ms 内存限制: 65536kB 描述 计算多项式的导函数是一件非常容易的任务。给定一个函数f(x),我们用f(x)来表示其导函数。我们用x^n来表示x的n次幂。为了计算多项式的导函数,你必须知道三条规则: (1)、(C) 0 如果C是常量 (2)、…...
数据结构:顺序表(C++实现)
1 头文件 SeqList.h //SeqList.h #pragma once #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cassert> using namespace std; class SeqList { public://初始化SeqList();//销毁~SeqList();//头插void PushFront(int data);//头删void PopFront(…...
从零开始 TensorRT(7)C++ 篇:解析 ONNX
前言 学习资料: B站视频配套代码 cookbook 示例 参考源码:cookbook → 04-BuildEngineByONNXParser → pyTorch-ONNX-TensorRT 源码 C 代码量较多,已上传 GitHub OpenCV 安装: apt install libopencv-dev(1&…...
k8s集群的CA证书过期处理
文章目录 制作延期的CA证书获取CA全名准备签发申请配置生成新CA验证并替换CA 更新master组件的CA配置kube-apiserverkube-controller-managerkube-schedulerkube-admin检查证书过期时间 更新ServiceAccount secret更新node组件配置的CA更新kubelet连接配置签发kubelet自动申请的…...
linuxOPS基础_linux系统注意事项
Linux严格区分大小写 Linux 和Windows不同,Linux严格区分大小写的,包括文件名和目录名、命令、命令选项、配置文件设置选项等。 例如,Win7 系统桌面上有文件夹叫做Test,当我们在桌面上再新建一个名为 test 的文件夹时,…...
《探索虚拟与现实的边界:VR与AR谁更能引领未来?》
引言 在当今数字时代,虚拟现实(VR)和增强现实(AR)技术正以惊人的速度发展,并逐渐渗透到我们的日常生活中。它们正在重新定义人与技术、人与环境之间的关系,同时也为各行各业带来了全新的可能性。然而,究竟是VR还是AR更有潜力改变未来?本文将围绕这一问题展开深入探讨。…...
C++ 获取上一级文件夹路径
我们可能会经常遇到文件所在文件夹路径的问题,虽然各大平台也有提供方便快捷的API来实现,但是如果脱离平台本身,或者想实现跨平台的话,可以考虑用纯C的代码来实现这一需求 示例代码 #include <string> #include <ios…...
Apache Pulsar的分布式集群模式构建
1. 准备环境 6台带jdk8的Linux服务器(CentOS7为例) ip分别为: 主机名IP地址zookeeper1192.168.8.101zookeeper2192.168.8.102zookeeper3192.168.8.103pulsar1192.168.8.108pulsar2192.168.8.109pulsar3192.168.8.110 2. 下载Pulsar最新安…...
第三百八十六回
文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容固定显示…...
Java中介者模式剖析及使用场景
中介者模式 一、介绍二、智能家居系统项目实现三、总结1.优点2.缺点3.使用经验4.Spring框架类似使用思想 一、介绍 介者模式是一种行为型设计模式,它允许对象之间通过一个中介者对象进行通信,而不是直接相互引用。将多对多的关系转化为一对多的关系&…...
ElevenLabs用AI为Sora文生视频模型配音 ,景联文科技提供高质量真人音频数据集助力生成逼真音效
随着Open AI公司推出的Sora文生视频模型惊艳亮相互联网,AI语音克隆创企ElevenLabs又为Sora的演示视频生成了配音,所有的音效均由AI创造,与视频内容完美融合。 ElevenLabs的语音克隆技术能够从一分钟的音频样本中创建逼真的声音。为了实现这一…...
Go语言基础
Go的数据类型定义 //运行第一个程序package main func main(){print("Hello World") }在GO语言中,一个程序只能有一个main包,对应只能有一个main方法,若无法满足这个条件,编译时将会报错。注释方式与PHP相同 import的使…...
IOS覆盖率报告info文件解读
一,IOS覆盖率报告的生成 在做前端精准测试的时候,对于iOS端,通常会做如下操作: (1)合并覆盖率数据 如下操作: xcrun llvm-profdata merge coverage_file1657885040728.profraw coverage_fil…...
Gmsh与C++ API实战:从零构建有限元网格生成器
1. 为什么选择Gmsh进行有限元网格生成 第一次接触有限元分析时,我被各种网格生成工具搞得眼花缭乱。试过几个商业软件后,发现它们要么太贵,要么太复杂。直到遇到Gmsh,这个开源工具彻底改变了我的工作流程。Gmsh最吸引我的是它轻量…...
告别卡顿!用Android Studio Profiler揪出GPU性能瓶颈的保姆级实战
告别卡顿!用Android Studio Profiler揪出GPU性能瓶颈的保姆级实战 当你在测试最新开发的3D游戏时,突然发现角色转身时画面明显卡顿;或者电商App在快速滑动商品列表时,出现了令人不悦的白帧闪烁。作为中高级Android开发者ÿ…...
忍者像素绘卷开源可部署:支持国产操作系统(OpenEuler)的兼容方案
忍者像素绘卷开源可部署:支持国产操作系统(OpenEuler)的兼容方案 1. 项目概述 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工作站,专为像素艺术创作而设计。这款工具将传统漫画创作与现代AI技术相结合,创…...
小白友好!Llama-3.2V-11B-cot快速入门:上传图片提问,看AI推理全过程
小白友好!Llama-3.2V-11B-cot快速入门:上传图片提问,看AI推理全过程 1. 引言:像聊天一样使用AI视觉推理 想象一下,你手头有一张图片——可能是旅游时拍的风景照,或是工作中遇到的图表,又或是孩…...
做不规则多变量时序预测,试试ReIMTS递归多尺度框架,我实验涨点明显!
不规则多变量时间序列的预测任务在医疗、气象等领域至关重要,但其面临着采样间隔不均和数据缺失两大挑战。传统方法难以在稀疏数据中捕捉可靠模式,而现有的大型预训练模型多为规则采样数据设计。 针对这些问题,研究者们提出了创新的解决方案…...
快速上手:LangChain + AgentRun 浏览器沙箱极简集成指南
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
轻流无代码如何重构质量管理体系?这 3 个价值必须了解
轻流无代码如何重构质量管理体系?这 3 个价值必须了解如果用一句话概括轻流 AI 无代码平台在质量管理场景的价值,那就是:让业务人员自主搭建管理系统,无需编写代码,1-2 周即可上线核心功能,总体拥有成本降低…...
Python自动化抓取Keep运动数据:从入门到实战
1. 为什么需要自动化抓取Keep运动数据 作为一个健身爱好者,我每天都会用Keep记录自己的运动数据。但时间久了发现一个问题:这些宝贵的数据都散落在App里,想做个长期分析特别麻烦。每次都要手动截图、复制粘贴,效率低不说ÿ…...
用Matlab App Designer给杨氏双缝干涉实验做个交互式GUI(附完整源码)
用Matlab App Designer打造杨氏双缝干涉实验交互式GUI 在光学实验教学中,杨氏双缝干涉是理解波动光学基础的重要实验。传统实验室操作需要精密调节光路、严格控制环境条件,而Matlab仿真可以突破这些限制。本文将带你从零开始,使用App Designe…...
【独家首发】金融级AIAgent意图识别SLA白皮书(P99延迟≤110ms,意图召回率≥99.3%,含3家头部银行脱敏验证数据)
第一章:金融级AIAgent意图识别模块概述 2026奇点智能技术大会(https://ml-summit.org) 金融级AIAgent意图识别模块是面向高合规、低容错、强可解释性场景构建的核心前置组件,专为银行、证券、保险等持牌金融机构的智能交互系统设计。它不仅需准确捕获用…...
