解决对接淘宝开放平台添加商品图片问题

问题

之前工作因队友离开,只一天接手其部分且第二天就要上线此工具产品,测试提了一些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 = taobaoService.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());这里因为淘宝那边有校验结果,所以直接返回。

同事建议说在后端对图片做调整处理成符合淘宝的图片,个人觉得在前端调整处理比较合适、所见即所得。

打包部署配置Nginx联调ok。当时ld只给一天时间解决这些问题没时间紧搞,就这样先了。跟对ld还是挺重要的,像1天接手和填别人未知的坑、3天开发上线带后台小程序、休闲变BC等还挺搞人。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣刷题日志-Day2 (力扣151、43、14)

151. 反转字符串中的单词 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开 思路:根据题目大意,空格之间的就是一个单词,所以我们需要利用…

[高精度加法和乘法] 阶乘之和

题目描述 用高精度计算出 S1!2!3!⋯n!(n≤50)。 其中 ! 表示阶乘,定义为 n!n(n−1)(n−2)⋯1。例如,5!54321120。 输入格式 一个正整数 n。 输出格式 一个正整数 S,表示计算结果。 输入输出样例 输入 #1 3输出…

swagger踩坑之请求类不显示具体字段

swagger踩坑之请求类不显示具体字段 省流:枚举字段需要加上ApiModelProperty注解 过程复现: TestEnum 枚举不加注解,swagger的UI类不显示详细字段 Data Accessors(chain true) ApiModel(value "test对象", description &quo…

通过Office Web Viewer站点在线展示Office文档内容

方法: https://view.officeapps.live.com/op/view.aspx?src经Url编码的文档线上Url地址 比如: //以下地址来自一份旧项目代码,可见用的就是该方案function OfficeFileViewOnline(url, file_type, file_name) {url "http://14.23.112.2…

【美团笔试】20240309—春招、暑期实习实习笔试

【美团笔试】20240309—春招实习笔试真题 文章目录 【美团笔试】20240309—春招实习笔试真题1. 小美的MT2. 小美的数组询问3. 小美的平衡矩阵(前缀和)4. 小美的区间删除5. 小美的朋友关系参考1. 小美的MT MT 是美团的缩写,因此小美很喜欢这两个字母。现在小美拿到了一个仅由…

算法——哈希王

242.有效的字母异位词 力扣题目链接(opens new window) 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s "anagram", t "nagaram" 输出: true 示例 2: 输入: s "rat", t "car&qu…

配置vscode环境极简版(C/C++)(图文)

前言 众所周知,vscode是一个代码编辑器,不能直接编译运行我们敲的代码,必须提前配置好环境,而这也是劝退一众小白的一大重要因素,下面我想以一种提纲挈领的方式带大家走一遍从配置环境到运行实操代码的全过程。 安装…

Java项目:基于Springboot+vue实现的付费自习室系统设计与实现(源码+数据库+毕业论文)附含微信小程序端代码

一、项目简介 本项目是一套基于Springbootvue实现的付费自习室系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…

如何利用生成式人工智能完善会议纪要:捕捉会议要点的指南

在当今快节奏的商业环境中,有效的沟通和记录保存至关重要。有组织的会议纪要是这一过程的基石,它们作为会议讨论和决策的书面记录。但如何编写不仅有组织而且可以为出席者和未出席者提供可靠资源的会议纪要呢?让我们深入探讨一下会议纪要的艺…

openssl3.2 - exp - generate ecc priv key

文章目录 openssl3.2 - exp - generate ecc priv key概述笔记备注END openssl3.2 - exp - generate ecc priv key 概述 前面实验已经将ECC加解密的流程用openssl命令模拟出来了. 现在开始将ECC加解密流程中的知识点从openssl.exe源码中迁移到自己工程. 先迁移了一个命令如下…

算法-贪心-XMUOJ圣遗物的强化

题目 思路 贪心 - OI Wiki (oi-wiki.org) 贪心算法(greedy algorithm,又称贪婪算法)详解(附例题)-CSDN博客 代码 Python暴力排序 def min_mora_cost(n, levels):levels.sort() # 对圣遗物等级进行升序排序total_…

python数据类型 -- 元组Tuple

你好, 我是木木, 目前正在做两件事   1. 沉淀自己的专业知识   2. 探索了解各种副业项目,同时将探索过程进行分享,帮助自己以及更多朋友找到副业, 做好副业 文末有惊喜 在Python中,元组(tuple)是一种不可变序列类型&…

PostgreSQL 高可用安装部署

文章目录 一、概述1.PostgreSQL高可用2.Patroni 二、PostgreSQL高可用部署1.安装简介2.安装准备3.安装ETCD4.安装PostgreSQL5.安装Patroni6.安装haproxy7.安装keepalived8.测试 开源中间件 # PostgreSQLhttps://iothub.org.cn/docs/middleware/ https://iothub.org.cn/docs/mi…

vue触发真实的点击 事件 跟用户行为一致

<template><div><button ref"myButton" click"handleClick">按钮</button></div> </template><script> export default {methods: {handleClick() {const button this.$refs.myButton;// 创建一个鼠标点击事件…

Python基础快速入门

Python基础快速入门 前置知识 Python Python是一种广泛使用的高级编程语言&#xff0c;以其易于学习和使用的语法而闻名。以下是Python的一些主要特点&#xff1a; 高级语言&#xff1a;Python是一种高级语言&#xff0c;这意味着它提供了较高层次的抽象&#xff0c;使编程更…

什么是设计模式,举例说明Python中的常见设计模式

什么是设计模式&#xff0c;举例说明Python中的常见设计模式 设计模式是一种在软件设计中对常见问题的通用解决方案。它们是在软件开发中积累的宝贵经验&#xff0c;可以帮助开发者更快速、更高效地编写高质量、可维护的代码。设计模式通常包含一些类和接口&#xff0c;以及它…

排序算法的对比

类别排序方法时间复杂度空间复杂度稳定性平均情况最好的情况最坏的情况 插入 排序 插入排序稳定希尔排序不稳定 选择 排序 选择排序不稳定堆排序不稳定 交换 排序 冒泡排序稳定快速排序不稳定归并排序稳定基数排序稳定

git for windows

记录&#xff0c;git svn混用&#xff0c;检出代码时出错及解决方案&#xff0c; 执行命令&#xff1a; git svn clone svn_project_url 报错&#xff1a; certificate problem.(R)eject,accept (t)emporarily or accept (p)ermanently 解决&#xff1a; 在弹框中 输入P …

记录一个编译的LLVM 含clang 和 PTX 来支持 HIPIFY 的构建配置

llvm 18 debug 版本 build llvmorg-18.1rc4 debug $ cd llvm-project $ git checkout llvmorg-18.1.0-rc4 $ mkdir build_d $ cd build_d $ mkdir -p ../../local_d cmake \ -DCMAKE_INSTALL_PREFIX../../local_d \ -DLLVM_SOURCE_DIR../llvm \ -DLLVM_ENABLE_PROJECTS&…

平台工程:构建企业数字化转型的基石

有人说&#xff0c;平台工程&#xff08;Platform Engineering&#xff09;&#xff0c;不过是新瓶装旧酒&#xff08;DevOps&#xff09;。 而Gartner 将平台工程列为 2024 顶级战略技术趋势之一。我国信通院也开始陆续制定与平台工程相关的技术标准。 随着数字化浪潮的席卷…