Sadda-shutu
Sadda-shutu

Reputation: 1309

how to delete previusly selected file based on index value in mvc3?

Hi all i am working on mvc3

here i need to delete a previously uploaded file from the sessions data

anh i am displaying the file before inserting into data base so i am displaying the data in sessions now i need to delete the previously selected file plz help to how to get the selected file index value to delete the file from the sessions

For example here check this post it is in c# but i need this is in mvc3 please help me to do this work plz help me anyone

here my models are

 using System;
  using System.Collections.Generic;
   using System.Linq;
  using System.Web;
   using System.ComponentModel.DataAnnotations;

   namespace BugTracker.Models
 {
public class BugModel
{


    public BugModel()
    {
        if (ListFile == null)
            ListFile = new List<BugAttachment>();
    }
    public List<BugAttachment> ListFile { get; set; }

    public string ErrorMessage { get; set; }
}

public class BugAttachment
{
    public string FileName { get; set; }
    public int BugAttachmentID { get; set; }
    public string AttachmentName { get; set; }
    public int BugID { get; set; }
    public string AttachmentUrl { get; set; }
    public string AttachedBy { get; set; }
}

}

here my controllers

      public ActionResult UploadFile(string AttachmentName, BugModel model)
        BugModel bug = null;
        if (Session["CaptureData"] == null)
        {
            bug = model;
        }
        else
        {

            bug = (BugModel)Session["CaptureData"];
        }
        foreach (string inputTagName in Request.Files)
        {
            HttpPostedFileBase file1 = Request.Files[inputTagName];
            if (file1.ContentLength > 0)
            {
                BugAttachment attachment = new BugAttachment();
                var allowedExtensions = new[] { ".doc", ".xlsx", ".txt", ".jpeg", ".docx" };
                var extension = Path.GetExtension(file1.FileName);
                if (!allowedExtensions.Contains(extension))
                {
                    model.ErrorMessage = "{ .doc, .xlsx, .txt, .jpeg }, files are allowed.... ";
                }
                else
                {
                    string filename = Guid.NewGuid() + Path.GetFileName(file1.FileName);
                    string path = "/Content/UploadedFiles/" + filename;
                    string savedFileName = Path.Combine(Server.MapPath("~" + path));
                    file1.SaveAs(savedFileName);
                    attachment.FileName = "~" + path.ToString();
                    attachment.AttachmentName = AttachmentName;
                    attachment.AttachmentUrl = attachment.FileName;
                    bug.ListFile.Add(attachment);
                    model = bug;
                }
                Session["CaptureData"] = model;
            }

        }
        ModelState.Clear();

        return View("LoadBug", bug);
    } 

and here my view page

    <div class="UploadMain">
    <%:Html.Label("Attachment Name:") %>
    <%:Html.TextBoxFor(model=>model.AttachmentName) %>
    <span>
        <%:Html.Label("Upload Files") %></span>
    <input type="file" name="file" id="file" />
    <input type="submit" value="Upload" id="Upload" class="style-name cancel"  />
    <%--onclick="window.location.href='<%= Url.Action("UploadFile", "Bug") %>';"--%>
    <table align="center" class="gridtable" border="0" cellspacing="0" cellpadding="0">
        <tr>
            <th>
                Attachment Name
            </th>
            <th>
                Attachment Url
            </th>
            <th>
            Action 
            </th>
        </tr>
        <% if (Model != null && Model.ListFile != null)
           {  %>
        <% foreach (var Emp in Model.ListFile)
           { %>
        <tr class="Data">
            <td >
                <%:Emp.AttachmentName %>
            </td>
            <td >
                <%: Emp.FileName %>
            </td>
           <td>
          <%-- <%= Html.ActionLink("Delete", "Delete")%>--%>

            <%:Html.ActionLink("Delete", "Delete", new { @FileName = Emp.FileName })%>


            </td>
        </tr>
        <% } %>
        <% } %>
    </table>
</div> 

For example here check this post it is in c# but i need this is in mvc3 please help me to do this work plz help me anyone

thanks in advance

Upvotes: 0

Views: 788

Answers (1)

AwDogsGo2Heaven
AwDogsGo2Heaven

Reputation: 972

To delete a file you uploaded all you need is its filepath, and use File.Delete("filepath"); To know which file to delete your Delete action should take an id:

Delete(int id)

Then in your action link pass the BugAttachmentID: (using route values/parameters)

<%:Html.ActionLink("Delete", "Delete", new { @FileName = Emp.FileName }, new { id = Emp.BugAttachmentID })%>

Then in your delete method you use the ID to find the file in the FileList you want to delete. And then call File.Delete using the attachment url.

I hope this helps.

Upvotes: 1

Related Questions