2016-07-16 7 views
0

저는 C#을 사용하여 ASP.NET의 문서 관리 시스템에서 작업하고 있습니다. 모든 폴더와 파일을 Windows 서버에 저장하고 폴더와 파일 정보를 SQL 데이터베이스에 저장합니다. 매번 서버에 폴더 나 파일을 만들고 데이터베이스에서 고유 한 ID로 이름을 추가합니다. 예 : ~ 432cace7-a39c-4db5-a38f-9efe5d289bbf.pdf기준에 따라 파일 및 폴더 다운로드 및 삭제

같은 폴더에 액세스 할 수 있고 액세스를 기준으로 삭제하고 다운로드 할 수있는 사용자가 있습니다.

예 : 사용자 1, 사용자 2가 2 명입니다. 나는 2 개의 파일을 포함하는 폴더 -1을 가지고있다. file-1은 user-1과 file-2에 의해 user-2에 의해 업로드됩니다. 이제 user-1이 브라우저 페이지에서 파일을 볼 때 데이터베이스 쿼리를 기반으로 folder-1과 file-1을 표시합니다. 그러나 사용자 one이 다운로드를 위해 folder-1을 선택하면 Windows 서버로 이동하여 파일 -1과 파일 -2를 물리적으로 서버의 동일한 폴더 내에 있으므로 다운로드합니다. 같은 경우도 삭제됩니다.

이 시나리오를 어떻게 처리 할 수 ​​있습니까?

기본적으로 SQL에서의 처리는 관계형 데이터베이스에서는 훨씬 쉽지만 Windows 서버에서 어떻게 효율적으로 처리 할 수 ​​있을지 생각하고 있습니까?

내 생각 : ID 목록을 반환하는 DB 저장 프로 시저를 호출하면 다운로드 ZIP 또는 삭제가 생성됩니다. 그러나 폴더와 파일의 중첩이있을 수 있으므로 성능면에서 얼마나 효율적입니까?

var file_name = response.value[0]["name"]; 
var downloadurl = response.value[0]"@microsoft.graph.downloadUrl"]; 

// --------------------- : JS 파일에서

:

+0

사용자가 브라우저 URL을 사용하여 파일 또는 폴더로 바로 이동할 수 있습니까? 자신의 파일을 다운로드하는 데 사용 된 URL 형식을 기반으로 파일 이름을 추측하여 다른 사람이 파일을 다운로드 할 수 있습니까? – PhillipH

+0

사용자는 파일 이름을 추측 할 수 있지만 해당 이름과 관련된 파일의 고유 한 GUID를 추측 할 수는 없습니다. 마찬가지로 위의 내 예제를 알면, 파일 및 폴더 이름 형식으로됩니다 : name ~ guid – user2272865

답변

-1

은 아래 코드와 절차에 따라 -------------------------------------------------- //

WEBMETHOD 우리 뒤에 코드에서
function HandleIT(downloadurl,file_name) { 
    PageMethods.ProcessIT(downloadurl,file_name, onSucess, onError); 
    function onSucess(result) { 
     alert(result);  
    } 
    function onError(result) { 
     alert('Something wrong.'); 
    } 
} 

:

[WebMethod] 
     public static string ProcessIT(string downloadURL, string file_name) 
     {    
      // Create a new WebClient instance. 
      WebClient myWebClient = new WebClient(); 
      string path = @"c:\"; 
      string path_n_name = path + file_name; 
      // Download the Web resource and save it into the current filesystem folder. 
      myWebClient.DownloadFile(downloadURL, path_n_name); 
      return "SUCCESS"; 
     } 

이 내가 파일

if(fileName != null || fileName != string.empty) 
    { 
     if((System.IO.File.Exists(fileName)) 
      System.IO.File.Delete(fileName); 

    } 

이 당신을 위해 작동 희망 을 삭제하는 방법입니다 ...!

+0

포함하는 것을 잊지 마세요 : using System.Net; –