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

SharePoint 2019本地版:从Ajax XML响应提取图片URL并显示问题

解决SharePoint 2019本地版Ajax获取附件图片无法显示的问题

你当前使用的objArray[i].AttachmentFiles.__deferred.uri是REST接口的请求地址,并非图片的直接访问URL,所以用它作为img标签的src属性时,浏览器无法加载到正确的图片资源,只会显示默认占位图标。

正确处理步骤

  • 第一步:通过__deferred.uri发起二次Ajax请求,获取该列表项的所有附件详情(包含图片的ServerRelativeUrl)
  • 第二步:将ServerRelativeUrl作为图片的直接访问路径(本地版SharePoint可直接使用该相对路径,浏览器会自动解析为站点内的完整地址)
  • 第三步:用正确的图片URL生成img标签

代码示例(以jQuery为例)

假设你原本的循环逻辑是遍历列表项,修改后可按以下方式处理:

// 遍历列表项数组
for (var i = 0; i < objArray.length; i++) {
  var listItem = objArray[i];
  // 请求附件集合接口,获取具体附件信息
  $.ajax({
    url: listItem.AttachmentFiles.__deferred.uri,
    method: "GET",
    headers: { "Accept": "application/json; odata=verbose" },
    success: function(response) {
      // 遍历当前列表项的所有附件
      response.d.results.forEach(function(attachment) {
        // 过滤出图片格式的附件(可选)
        var validImgExts = ['.jpg', '.jpeg', '.png', '.gif'];
        var fileExt = attachment.FileName.toLowerCase().slice(attachment.FileName.lastIndexOf('.'));
        if (validImgExts.includes(fileExt)) {
          // 生成img标签并插入页面
          var imgElement = `<img src="${attachment.ServerRelativeUrl}" alt="${attachment.FileName}" style="max-width: 200px; margin: 8px;" />`;
          $('#target-container').append(imgElement);
        }
      });
    },
    error: function(err) {
      console.error('获取附件失败:', err);
    }
  });
}

关键说明

  1. 二次请求的必要性:SharePoint REST接口返回的AttachmentFiles.__deferred.uri是指向附件集合的接口地址,必须发起请求才能拿到每个附件的实际访问路径。
  2. ServerRelativeUrl的作用:这个字段是图片在SharePoint站点内的相对路径,直接作为img的src即可被浏览器正确解析(本地版环境下,当前页面与图片默认同域,无需额外拼接根URL)。
  3. 图片过滤逻辑:可选步骤,避免将文档类附件错误渲染为img标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:25:09