2011-07-29 3 views
3

저는 현재 (C#에서 프로그래밍하고있는) 인터넷 응용 프로그램에 문제가 있습니다.관리자 권한이 없으면 어떤 저장소에 저장할 수 있습니까?

보고서를 작성한 다음 이메일을 통해 특정 사용자에게 보내야합니다. 보고서를 만든 후에는 먼저 임시 파일에 저장 한 다음 파일 경로를 제공하는 전자 메일에 첨부합니다.

관리자 권한이 있기 때문에 컴퓨터에서 작동하지만 관리자 권한이없는 동료에게는 해당 컴퓨터에서 작동하지 않습니다.

내가 사용하고 파일 경로는 다음과 같습니다

string filePath = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.InternetCache), 
    fileName 
); 

내가 관리자 권한을 필요로하지 않습니다 사용할 수 있습니다 임시 저장소가 있습니까?

감사합니다.

+1

.Net에 내장 된'MailMessage' 클래스를 사용하고 있습니까? 보고서를 생성하는 것은 무엇입니까? – Brook

+1

이것은 실제로 ASP.NET 웹 응용 프로그램입니까? 왜 웹 사이트를 사용하여 만든 파일을 서버의 InternetCache에 저장하려고합니까? 물론 이것은 실패 할 것이다. – gangelo

답변

2

.Net에 내장 된 메일 클래스를 사용하는 경우 보고서를 생성하는 것이 무엇이든 필요하지 않으면 첨부 파일을 파일에 작성해야 할 이유가 없습니다.

보고서 생성기에서 파일 출력이 필요하지 않으며 바이트 만 반환 할 수 있다고 가정하면이 방법이 유용합니다.

  SmtpClient smtpClient = new SmtpClient(); //do whatever else you need to do here to configure this 
      byte[] report = GetReport();//whatever your report generator is 
      MailMessage m = new MailMessage(); 
      //add your other mail fields (body, to, cc, subject etc) 
      using (MemoryStream stream = new MemoryStream(report)) 
      { 
       m.Attachments.Add(new Attachment(stream,"reportfile.xls"));//just guessing, use the right filename for your attachment type 
       smtpClient.Send(m); //note that we send INSIDE this using block, because it will not actually read the stream until you send 
            //and you want to make sure not to dispose the stream before it reads it 
      } 
+0

나는 그가 당신에게 말할 때까지 즉시 보고서를 이메일로 보낼 수 없다고 가정해야한다는 사실이 아니라면 나는 이것을 상상했다. – gangelo

+0

@ gangelo : 나는 그것을 설명했기 때문에 그것을 깨달았지만 IMHO 작성 임시 파일은 아무리 좋은 해결책이 아니기 때문에 게시 가치가 있다고 생각합니다. 비록 그것이 일부 애매한 파일 전용 보고서 생성기 ... 그것은 새로운 보고서 생성기를 얻을 시간이야 – Brook

+0

지금 나와 함께 시험하지 마라; 그 해결책이 그에게 도움이된다면 나는 당신을 투표 할 것입니다;) – gangelo

0

전자 메일에 어떻게 첨부합니까? 귀하의 질문 소리에서 당신이하고있는 모든 일은 첨부 파일이 아니라 작성한 파일의 경로를 제공하는 것입니다 (첨부하면 이메일에 포함되므로 경로가 포함되지 않습니다) .

웹 응용 프로그램에서 임시 파일을 만드는 경우 app_data 폴더 (일반적으로 쓰기 가능)를 사용하고 Path.GetRandomFileName()을 사용하여 고유 한 파일 이름을 가져올 수 있습니다.

그래서,

var myTemporaryFileName = Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data", 
             Path.GetRandomFileName()); 

같은 그럼 이제 당신이 그것을 보낼 수 있습니다 후 이메일

MailMessage message = new MailMessage("[email protected]", "", ""    
         "subject", 
         "mail body"); 

Attachment data = new Attachment(file, MediaTypeNames.Application.Octet); 
ContentDisposition disposition = data.ContentDisposition; 
disposition.FileName = "thefilenameyouwanttouseintheemail.ext"; 
message.Attachments.Add(data); 

에 첨부,이 임시 파일 이름으로 파일을 작성합니다.

후 청소하는 것을 잊지 마세요!

관련 문제