You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS-Cart导入CSV图片失败:.ashx扩展名限制问题求助

解决CS-Cart导入商品时.ashx图片链接下载失败的问题

问题场景

  • 导入供应商CSV商品时,图片下载报错:Error It is not allowed to upload files with .ashx extension here.
  • 示例图片链接:
    https://www.electrolux.ro/remote.jpg.ashx?urlb64=aHR0cHM6Ly9zZXJ2aWNlcy5lbGVjdHJvbHV4LW1lZGlhbGlicmFyeS5jb20vMTE4ZWQ0YzBlZTY1NDZmNGE3Njg0YzdmZWY4Yzk4NWFOclptWWtNODYxZDFmL3ZpZXcvV1NfUE4vUFNFRURSMTkwUEUwMDAwOC5wbmc&hmac=gh4omIw1ca8
    
  • 异常情况:脚本下载失败,但后台手动上传、浏览器直接打开图片均正常
  • 当前curl脚本片段:
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    
  • wget执行提示:Redirecting output to ‘wget-log'

核心原因

CS-Cart会根据URL的文件后缀判断允许上传的类型,.ashx不在允许列表内;但实际该链接返回的是合法图片内容,只是URL后缀不符合系统校验规则。


解决方案

方案1:修改curl脚本,获取真实图片类型并指定扩展名

通过curl获取响应头的Content-Type字段,映射为对应图片扩展名,手动指定保存文件名,绕过CS-Cart的后缀校验。

修改后的完整curl处理逻辑:

// 初始化curl请求
$ch = curl_init($url);

// 关键配置调整
curl_setopt($ch, CURLOPT_HEADER, 0);          // 不将头信息混入响应内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  // 将响应内容以字符串返回,而非直接输出
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  // 自动跟随重定向
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'); // 模拟浏览器UA,避免被拦截

// 执行请求并获取响应
$imageContent = curl_exec($ch);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); // 获取响应的Content-Type
curl_close($ch);

// 映射Content-Type到图片扩展名
$extMap = [
    'image/jpeg' => '.jpg',
    'image/png' => '.png',
    'image/gif' => '.gif',
];
$extension = $extMap[$contentType] ?? '.jpg'; // 默认使用jpg作为 fallback

// 生成带正确扩展名的临时文件
$tempFile = tempnam(sys_get_temp_dir(), 'cs_img') . $extension;
file_put_contents($tempFile, $imageContent);

// 将$tempFile路径传入CS-Cart的商品图片上传逻辑即可

方案2:预处理URL,移除.ashx后缀(兼容性依赖供应商配置)

直接修改URL,剥离.ashx后缀后尝试下载,部分供应商服务器会接受这种请求并返回图片:

// 正则移除URL中的.ashx后缀
$processedUrl = preg_replace('/\.ashx(\?.*)?$/', '$1', $url);

// 后续用$processedUrl执行原curl逻辑即可

注意:该方法不保证所有供应商服务器都支持,优先选择方案1。


wget命令的处理方式

如果用wget下载,可通过-O参数强制指定保存的文件名及扩展名,避免日志提示同时绕过后缀校验:

wget -O product_image.jpg "https://www.electrolux.ro/remote.jpg.ashx?urlb64=..."

内容的提问来源于stack exchange,提问作者weblocal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 20:50:10