Path to file in Virtual folder

Member since: 2008
 

I have a page where I can send a mail to specific users and has added a FileSystemDataSource to list files so I can attach them to the mail.

But to add them to the mail I need the relative path.

How do I get the relative path to an EPiServer Virtual Directory (ie Documents)? 

#29880 May 20, 2009 8:22
  • Member since: 2008
     

    Ok, I found out how:

    EPiServer.Web.Hosting.UnifiedFile uf = System.Web.Hosting.HostingEnvironment.VirtualPathProvider.GetFile(attachment) as EPiServer.Web.Hosting.UnifiedFile;

    But the name of the attachmnet isn't the display name, is there anyway to change the name of the attachment in the mail.
     
    #29881 May 20, 2009 8:46
  • Member since: 2006
     

    Hi

     I'm not sure if this is what you are asking, but can't you do something like this:

    UnifiedFile file = HostingEnvironment.VirtualPathProvider.GetFile(filePath) as UnifiedFile;

    if (file != null)

    {

    using(Stream stream = file.Open())

    {

    string fileName = "My_file_name";

    Attachment attachment = new Attachment(stream, fileName, "application/pdf"); //Or other Mime-type

    //Send mail

    }

    }

    #29888 May 20, 2009 10:34
  • Member since: 2008
     

    Thanx for the tip it made me find the .Name attribute on the attachment and instead of using a strem a solved it like this:

    //On page:
    // -------- START Building attachment string
    string attachmentFiles = "";
    foreach (ListItem li in CheckBoxListFiles.Items)
    {
     if (li.Selected == true)
     {
      attachmentFiles += li.Value + ";";
     }
    }
    if (attachmentFiles.Contains(";"))
    {
     attachmentFiles = attachmentFiles.Substring(0, attachmentFiles.Length - 1);
    }

    string virtualFolder = FileDataSource.Root;
    string attachments = "";
    if (attachmentFiles.Length > 0)
    {
     foreach (string file in attachmentFiles.Split(';'))
     {
      string virtualFile = virtualFolder + file;
      EPiServer.Web.Hosting.UnifiedFile uf = System.Web.Hosting.HostingEnvironment.VirtualPathProvider.GetFile(virtualFile) as EPiServer.Web.Hosting.UnifiedFile;
      attachments += uf.LocalPath + "," + file + ";";
     }
     if (attachments.Contains(";"))
     {
      attachments = attachments.Substring(0, attachments.Length - 1);
     }
    }
    // -------- END Finished Building attachment string
    // Pass the attachments string to send mail function


    //In the send mail function
    if (attachments.Length != 0)
    {
     foreach (string attach in attachments.Split(';'))
     {
      string[] file = attach.Split(',');
      Attachment attachment = new Attachment(file[0]);
      attachment.Name = file[1];
      msg.Attachments.Add(attachment);
     }
    }

    #29893 Edited, May 20, 2009 14:14
This thread is locked and should be used for reference only. Please use the Episerver CMS 7 and earlier versions forum to open new discussions.
Please login to post a reply