I have an SPListItem for which I would like to get the urls of all its attachments. The urls will be used as part of my custom web part which has an SPList of SPListItem items.

2 Answers 2

private IEnumerable<string> GetAttachmentUrls(SPListItem item)
  return from string fileName in item.Attachments
         orderby fileName
         select SPUrlUtility.CombineUrl(item.Attachments.UrlPrefix, fileName);
  • 5
    Always use SPUrlUtility.CombineUrl to combine urls Commented Mar 20, 2012 at 20:03
  • Doesn't this return an IEnumerable<string>, though. I think string[] as the return type might not work... Commented Dec 7, 2012 at 17:21
  • 1
    @RobertKaucher You would be correct. I think that I forgot to add in the parentheses and the .ToList() when I originally wrote this example.
    – skeletank
    Commented Dec 7, 2012 at 17:30

I have used the following code in an itemAdded event receiver.

        public override void ItemAdded(SPItemEventProperties properties)
            if (properties.ListTitle == "Architecture Calendar")

                string eventUrl = null;
                string AttachUrl=null;

                using (SPSite site = properties.OpenSite())
                    using (SPWeb web = site.OpenWeb())
                            SPList listCalendar = web.Lists[properties.ListId];
                            SPItem itemCalendar = properties.ListItem;
                            SPSite mainSite = new SPSite(site.Url + @"/admin/");
                            SPWeb mainWeb = mainSite.OpenWeb();

                            **AttachUrl = properties.ListItem.Attachments.UrlPrefix + properties.ListItem.Attachments[0];**

                            SPList listIntegrated = mainWeb.Lists["IntegratedEvents"];
                            SPListItem itemIntegrated = listIntegrated.Items.Add();

                            **itemIntegrated["Picture"] = AttachUrl;**


                        catch (Exception Ex)
                            throw Ex;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.