2009-11-17 3 views
0

사용자가 주어진 텍스트 상자에 텍스트를 입력하고 createNewFile 단추를 클릭하면 SaveAs 대화 상자가 나타나야하고 사용자는 위치를 탐색해야합니다. 원하는대로 파일을 저장하십시오.asp.net을 사용하여 텍스트 상자 내용을 newfile에 저장하기 위해 DialogBox로 저장

나는, 어떤 것을하지만
1. 대화 상자가 실행
2. 대화 상자가 3 회를 열 응용 프로그램 뒤에가는 시도는 POST

TO 3 회

REPLY를 실행하는 것을 의미 한

protected void btnNewFile_Click(object sender, EventArgs e) { StreamWriter sw = null; try { SaveFileDialog sdlg = new SaveFileDialog(); DialogResult result = sdlg.ShowDialog(); sdlg.InitialDirectory = @"C:\"; sdlg.AddExtension = true; sdlg.CheckPathExists = true; sdlg.CreatePrompt = false; sdlg.OverwritePrompt = true; sdlg.ValidateNames = true; sdlg.ShowHelp = true; sdlg.DefaultExt = "txt"; string file = sdlg.FileName.ToString(); string data = txtNewFile.Text; if (sdlg.ShowDialog() == DialogResult.OK) { sw.WriteLine(txtNewFile.Text); sw.Close(); } if (sdlg.ShowDialog() == DialogResult.Cancel) { sw.Dispose(); } } catch { } finally { if (sw != null) { sw.Close(); } } } private void Save(string file, string data) { StreamWriter writer = new StreamWriter(file); SaveFileDialog sdlg1 = new SaveFileDialog(); try { if (sdlg1.ShowDialog() == DialogResult.OK) { writer.Write(data); writer.Close(); } else writer.Dispose(); } catch (Exception xp) { MessageBox.Show(xp.Message); } finally { if (writer != null) { writer.Close(); } } } 

나는 이것을 시도했다.

+0

시도한 것을 게시하십시오. 그렇지 않으면 이미 시도한 것을 제안 할 수 있습니다. – ChrisF

+0

파일을 클라이언트 또는 서버에 저장할 위치는 어디입니까? – Murph

+0

서버용으로하고 싶습니다. 그러나 초보자 인 IAM 이후로 저는 로컬 용으로 노력하고 있습니다. – user195114

답변

0

이 링크에서 아이디어를 취할 수 있습니다 : C# 및 갱신이
http://codingforums.com/showthread.php?t=90278

변환을 텍스트 상자의 텍스트를 작성하기위한.

+0

답장을 보내 주셔서 감사합니다. 하지만 제대로 이해하지 못하고 있습니다. – user195114

0

SaveFileDialog은 Windows 폼 컨트롤이며 웹 사이트에서는 작동하지 않습니다.

서버가 기본적으로 처리 할 수없는 스트림을 보낼 때마다 브라우저에서 "이 파일로 무엇을 하시겠습니까?"대화 상자가 표시됩니다. 불행히도 대부분의 브라우저는 텍스트 스트림을 처리 할 수 ​​있기 때문에 표시됩니다 사용자에게

그러나이 같은 당신이 가야한다 :

protected void btnNewFile_Click(object sender, EventArgs e) 
{ 
    // Clear the response buffer: 
    Response.Clear(); 

    // Set the output to plain text: 
    Response.ContentType = "text/plain"; 

    // Send the contents of the textbox to the output stream: 
    Response.Write(txtNewFile.Text); 

    // End the response so we don't get anything else sent (page furniture etc): 
    Response.End(); 
} 

을하지만 말했듯이, 대부분의 브라우저는 브라우저에게 거짓말을하고, 응용 프로그램 유형을 전달해야 할 수도 있으므로, 일반 텍스트에 대처할 수 있지만, 그러면 일부 컴퓨터에서 다운로드의 유용성이 제한 될 수 있습니다.

0

다른 사람들이 말한 것처럼 SaveFileDialog를 사용할 수 없습니다. 그렇게하면 서버에서만 볼 수 있으며 사용자는 절대 볼 수 없습니다. 당신의 경우에는 서버와 클라이언트가 동일하기 때문에 당신은 그것을 볼 수 있습니다.

당신은 HTTP 헤더

Content-Disposition: attachment; filename=somefilename.txt 
0

난 당신이 윈폼의 ENV이를하려고하는 가정을 설정해야합니다. 여기서 문제는 대화 상자를 세 번 튀기는 코드에서 .ShowDialog에 대한 세 번의 호출을 실행하는 것입니다. 당신은 한 번만 ShowDialog를 호출 한 후 저장하고 ASP.NET에는 다른 이름으로 저장 대화 상자가 없습니다

 DialogResult result = sdlg.ShowDialog(); 

     if (result == DialogResult.OK)    
     {     
      sw.WriteLine(data);     
      sw.Close();    
     } 
     else if (result == DialogResult.Cancel) 
     { 

     } 
0

아래의 결과 onlyas를 사용해야합니다. 그러나 응용 프로그램이 서버에 파일을 생성하도록 강제 할 수 있으며 사용자에게 다시 보내야합니다.

string userProvidedText    = uiTextBox.Text; // this is your textbox 
byte[] userProvidedTextAsBytes  = null; 

if (!string.IsNullOrEmpty(userProvidedText)) { 
    System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); 
    userProvidedTextAsBytes    = encoding.GetBytes(userProvidedText); 
} 

Response.AppendHeader("Content-Disposition", "attachment; filename=YourFileName.html"); 
Response.ContentType = "text/HTML"; 
Response.BinaryWrite(userProvidedTextAsBytes); 
Response.End(); 

이 코드가 실행

, 응용 프로그램이 YourFileName.html "즉시"생성하고 사용자에게 반환합니다. 이 시점에서 브라우저는 결과 출력을 차단하고 사용자에게 해당 특정 파일로 수행 할 작업을 묻습니다.

alt text http://www.cyphersec.com/wp-content/uploads/2009/04/output1.png

참고 : 사용 Response.TransmitFile() 이전에 저장된 파일을 제공하려는 경우.그 이유는 TransmitFile이 파일이 기본적으로 Kernel (IIS의 캐싱 규칙 기반)에 캐싱되도록하는 등 IIS에 파일 스트리밍을 기본적으로 오프로드하기 때문에 TransmitFile이 매우 효율적이라는 것입니다.

+0

정말 고마워요. 정말 도움이 되었어요. 그 설명이 정말 귀중한 것보다. 고맙습니다. 다시 – user195114

+0

문제 없어요, 저의 기쁨 :) – ntze

관련 문제