Skip to main content

SharePoint Image column behaves differently

We all are aware of the Image/Thumbnail column present in the SharePoint list. Whenever we want to store the image, we use this column, but recently I found that SharePoint image/thumbnail columns are behaving differently.
What's happening :

Previously, when we were saving the items in the list and when we fetched items using the code, it was giving a response like this:

'{"type":"thumbnail","fileName":"MyPhoto.jpg","nativeFile":{},"fieldName":"ProfilePicture","serverUrl":"https://techrobbers.sharepoint.com","fieldId":"id","serverRelativeUrl":"/sites/SIteName/SiteAssets/Lists/ListID/MyPhoto.jpg","id":"ID"}'

But now it is returning data in the below format:

"{"fileName":"Reserved_ImageAttachment_[14][Photo][7][content][2]_[10].jpg"}"

Also one catch here is that it's working fine for all the existing items but behaving differently on adding new items.

Due to this the code is breaking.

I have checked and found that response format is changed and serverRelativeUrl is coming as null and the location of the new items is also changed.

This is happening because updates made by SharePoint, In SharePoint Online Lists, if the Attachments option is Enabled, images will be stored in same SharePoint list (attachments section) instead of storing those in Site Assets library, that's why location is now changed for new items. 

Note: Some people suggest that we can disable the attachments in the SharePoint lists, but that is not the correct solution because attachments are a very important feature, and we might need both the image and attachment columns in the list. A better solution is that we should make some amendments in the code. 

To fixed these issue I have made some changes into the code and added a check for the serverRelativeUrl and if it comes as a blank, I am creating a new location by using the list name, item id and file name.

Here is the code.

let imagePath = "";
let ImageInfo = JSON.parse(data["Image"]);
if (ImageInfo && ImageInfo ["serverRelativeUrl"])
{
imagePath = ImageInfo ["serverRelativeUrl"];
}
else
{
imagePath = `${this.props.context.pageContext.site.absoluteUrl}/Lists/${this.props.listName}/Attachments/${ImageInfo .ID}/${ImageInfo .fileName}`;
}

Thanks.
Sharing is caring.

Comments

  1. Thank you so much for this insightful blog. It was very helpful and provided a lot of value. I really appreciate the time and effort you put into creating such useful content. Looking forward to more of your posts

    ReplyDelete

Post a Comment

Popular posts from this blog

SPFx Interview Questions With Answers

In this article, we are going to discuss interview questions related to the SPFx (SharePoint Framework Development ). It will help you to prepare for the interview and in getting clarity on the core concepts of SPFx development. What is SPFx? SPFx, short for SharePoint Framework,  SPFx  allows us for client-side SharePoint development, we can easily connect with SharePoint data and it also supports for open source tools. What is the major difference between SPFx web part and the SharePoint app? Both the development model supports client-side development but the major difference between these two is that the SharePoint app(add-in) runs on the iframe. What you can build with SPFx? Using SPFx framework we can customize the SharePoint pages. We can build things mentioned below using the SharePoint Framework(SPFx). Web parts, Extensions, Adaptive Card, Library Component How many types of extensions we can create using SPFx? SPFx has three extension types: Application Customizers: U...

SharePoint Framework SPFx Node Version Compatibility

How to check the compatibility between the SPFx version and the Node.js version The SharePoint Framework (SPFx) is a client-side development platform used to develop web parts and extensions for SharePoint. The SharePoint Framework (SPFx) is compatible with the Node.js versions. Existing SPFx solutions may have different SPFx versions as compared to the current solutions. To make the SPFx solution run, Node.js is required, and in this blog, I am sharing steps to check the compatible node module for SPFx.  Find the SPFx version from the solution:  Open the project solution and navigate to the "package.json" file. In package.json file you will find  "@microsoft/sp-core-library" key and value of this particular key is the version of the SPFx.       Ex:    "@microsoft/sp-core-library": "1.14.0" Another way to find the SPFx version is by command, open the command prompt and run the command mentioned below: npm ls -g --depth=0 @microsoft/generator-s...

How to Upgrade SharePoint Web Parts to the Newest Version

Updating the SharePoint/SPFx web parts or other solution is very common requirement, Webparts we can add from the SharePoint store or can be uploaded by our organization. To update a SharePoint web part to the latest version, start by uploading the updated SPFx package to the App Catalog. Then, make sure to upgrade the web part on the site where it’s being used. In this blog will be discussing ways to upgrade both package from the SharePoint app store or the the custom uploaded from the organization Update the web part added from the SharePoint app store: Go to the tenant level app catalog site. Select the app which you want to upgrade. Once you select the app, go the top ribbon and select file and click on the "Upgrade Store App", updated version will be added on the appcatalog if the new version is available on the store. Note: If you built the custom webpart then upload it to the app catalog. Install the upgraded solution: Navigate to the site collection where you have ins...