2013-06-21 1 views
1

Response.TransmitFile()을 사용하여 C 드라이브의 폴더에서 zip 폴더를 다운로드합니다. 폴더를 잘 다운로드하고 내 다운로드 폴더에있는 파일을 얻을. 그러나 문제는 내 다운로드 폴더에있는 ASP 페이지의 이름을 가진 zip 파일이고, 안에는 다운로드하려는 폴더가 있습니다. 다른 문제는 내가 업로드에서 zip 폴더의 끝 부분에 DataTime을 추가하지만 날짜가 폴더 이름의 끝에 없기 때문입니다.ASP TransmitFile()을 사용하여 파일 다운로드

내 업로드 코드는 다음과 같습니다

string pnq = HttpContext.Current.Request.Url.PathAndQuery; 
string url = HttpContext.Current.Request.Url.AbsoluteUri.Replace(pnq, "/"); 
if (FileUpload1.HasFile) 
{ 
     var filename = FileUpload1.PostedFile.FileName; 
     var uriID = Guid.NewGuid().ToString(); 
     var password = System.Web.Security.Membership.GeneratePassword(7, 2); 
     filename = filename.Remove(filename.Count() - 4) + "-" + DateTime.Now.ToShortDateString() + ".zip"; 
     filename = filename.Replace(" ", "-"); 
     filename = filename.Replace("/", "-"); 
     FileUpload1.SaveAs("C:\\Uploads\\" + filename); 
     lblUri.Text = url + "UICDownload.aspx?fileID=" + uriID; 
     lblPassword.Text = password; 
     string file = MapPath("~/Sample.xml"); 
     XDocument doc = XDocument.Load(file); 
     doc.Root.Add(new XElement("File", new XElement("name", filename), new XElement("uriID", uriID), new XElement("password", password))); 
     XElement name = new XElement("name", filename); 
     doc.Save(file); 
} 

내 다운로드 코드는 다음과 같습니다

var text = Request.QueryString["fileID"]; 
    string file = MapPath("~/Sample.xml"); 
    XDocument doc = XDocument.Load(file); 
    var node = doc.Document.Descendants("uriID").FirstOrDefault(u => u.Value.Equals(text)); 
    var filenode = node.Ancestors("File").First(); 
    var tempname = filenode.Element("name"); 
    var filename = tempname.Value.ToString(); 
    var filePassword = filenode.Element("password"); 
    if (filePassword.Value.ToString() == tbPassword.Text) 
    { 
     Response.Clear(); 
     Response.ContentType = "application/zip"; 
     Response.AppendHeader("Content-Disposition", "attachment; fileID=" + text); 
     Response.TransmitFile("C:\\Uploads\\" + filename); 
     Response.End(); 
    } 

XML 문서 메신저 같은 외모에 저장 :

<?xml version="1.0" encoding="utf-8"?> 
<rootElement> 
    <File> 
    <name>Pictures-21-06-2013.zip</name> 
    <uriID>96e1253b-634b-498a-b062-61a1a097ee3f</uriID> 
    <password>%zFxRr|</password> 
    </File> 
    <File> 
    <name>Test1-21-06-2013.zip</name> 
    <uriID>44d3d2c8-5c19-4f79-a5e2-66bb023a4d5e</uriID> 
    <password>{hik6.e</password> 
    </File> 

하세요 어떤 제안이라도 환영하며 다른 코드를 보여 주길 원한다면 알려주십시오. 또한 파일을 C : \ Uploads 폴더에 업로드하면 Zip 폴더의 이름 끝에 날짜가 추가됩니다. 다음에이 줄을 변경

답변

1

보십시오 : 당신이 다음 폴더를 압축하면 압축 파일의 중첩에 관해서는

Response.AppendHeader("content-disposition", "attachment; filename=" + filename); 
+0

, 그것은 폴더가 압축 파일 내에 중첩 된 것을 만듭니다. 우편 번호를 만들 때 파일을 압축하면됩니다 (이해가 되길 바래요?) –

+0

고맙습니다. –