2011-05-16 7 views
0

나는 (파일 전송) 모두가이 페이지에 버튼이 동일한 페이지
을 방문하는 두 사용자 AB이 있습니다 기능
파일을 보내고받는 방법은 무엇입니까?

의 경우 다음과 같은 종류를 원한다. A 다음이 링크 수 링크를 B 클릭이하는 SaveAs 대화 상자가 나타납니다 때 파일 이름
을 포함 B의 페이지와주고 나서 나타납니다 Open Dialog 상자에서 파일을 선택하면
때 버튼을 A 클릭 Open Dialog 상자가
을 표시한다 이름 및 경로 파일 다운로드를 시작해야합니다.

이 컨텍스트에서 어떤 종류의 도움을 주시면 감사하겠습니다!

답변

1

: <input type="file">

로 저장이 페이지의 뒤에 귀하의 코드는 다음 파일을 될 것입니다, 그 쿼리 문자열 PARAM에서 필요한 파일을 파악합니다 대화 상자는 html 앵커와 일치합니다 : <a href="www.myserver.com/download.aspx?filename='the file'">

사용자 A가 파일을 선택하면 AJAX 또는 onsubmit 양식을 사용하여 작성한 upload.aspx 페이지를 통해 파일을 업로드합니다.

사용자 B의 컴퓨터에서 AJAX를 사용하여 사용 가능한 파일 목록을 반환하는 updatefilelist.aspx 페이지를 호출합니다. 사용자 A의 새 파일이 서버에 업로드되고 저장되면 사용자 B의 AJAX에서 updatefilelist.aspx를 호출 한 다음 ping이 화면에 표시된 목록을 업데이트하여 새 파일을 포함합니다.

파일을 클릭하면 원하는 파일 이름으로 download.aspx 페이지가 호출됩니다. 여기에 과 Response.AddHeader("Content-Disposition", "attachment:filename=""" & IO.Path.GetFileName(Request.QueryString("filename")) & """")을 설정해야합니다. 다른 이름으로 저장 대화 상자가 자동으로 팝업됩니다.

+0

당신은 서버에 파일을 업로드 한 다음 'B' 서버에서 파일을 다운로드한다는 것을 의미합니다. – jams

+0

예. 모든 솔루션에는 A : 서버에 업로드를 수행 한 다음 B : 서버에서 다운로드가 필요합니다. 서버를 중간에서 사용하지 않고 A와 B 사이에 일종의 연결을 만들 수있는 방법이 없습니다. – ic3b3rg

1

잘 페이지를 두 개의 절반으로 나눌 수 있습니다 : 하나는 파일 업로드 컨트롤이 있고 다른 하나는 AJAX를 통해 3-4 초마다 폴링하여 새 파일이 있는지 확인하는 것입니다.

사이드 "A"는 표준 파일 업로드 컨트롤을 가지고 있으며 업로드 된 파일을 저장하는 표준 .NET 방식을 사용합니다 (FileUpload.PostedFile.SaveAs (경로), 쉬운 내용 참조). 파일 업로드가 완료되면이 페이지를 새로 고침하십시오.

사이드 "B"는 AJAX 호출, XML, JSON 또는 그냥 일반 텍스트에서 내용을 가져 오는 div입니다. "link.aspx"라는 AJAX 페이지에서 원하는 형식으로 콘텐츠를 다시 시작하십시오.

링크의 경우 "다운로드"창을 강제로 실행하려면 파일이 브라우저에 정상적으로 표시되지 않는 유형이거나 다른 aspx 페이지를 사용해야합니다. 대화 상자를 열어 저장 또는 열기하십시오.

aspx 페이지는 "file.aspx"와 같이 호출되며 querystring param ("id"또는 무언가)을 전달하여 원하는 파일을 지정할 수 있습니다.

가 열기 대화 상자가 HTML 입력을 acheived되어
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.fileName); 
Response.AddHeader("Content-Length", file.Length.ToString()); 
Response.ContentType = "image/jpeg"; // you gotta figure out the content type of the file here though. This is just the one for JPEGS. 

byte[] buffer = new byte[file.Length]; 
dl.Read(buffer, 0, (int)file.Length); 

Response.BinaryWrite(buffer); 
Response.End(); 
관련 문제