2010-04-24 3 views
0

제목이 너무 혼란스럽지 않기를 바랍니다. linq-to-SQL 개체의 ID로 폴더를 만들려고합니다. 사실 나는 전에을 저장해야 폴더를 만들어야합니다. 나는 그들을 이용하여 사용자가 업로드 한 파일을 유지할 것이다. 보시다시피 FileID로 폴더를 만들어야 거기에 저장할 수 있습니다. 따라서 편집되거나 삭제 될 레코드를 저장하면됩니다.ID를 나쁜 해킹을하기 위해 데이터베이스에 저장하고 있습니까?

File newFile = new File(); 
...//add some values to fields so they don't throw rule violations 
db.AddFile(newFile); 
db.Save(); 
System.IO.Directory.CreateDirectory("..Uploads/"+newFile.FileId.ToString()); 

그런 다음 일부 필드를 편집하고 다시 저장해야합니다. 물론 사용자가 업로드를 중지 할 수 있으므로 삭제해야합니다. 내가 사용할 수있는 다음 FileID를 얻으려면 저장 프로 시저를 작성할 수 있지만 같은 시간에 일어나는 다른 업로드가 동일한 번호를 얻을 것이라고 압니다. 그래서 그들은 내가 원하지 않는 것과 동일한 디렉토리에 글을 쓸 것입니다. 이것으로 계속해야할까요? 몇 가지 문제가 있습니까? 더 나은 방법을 생각해 볼 수 있습니까?

+1

을 위해 그것을 사용하는 것입니다, 당신은 필요가 없습니다 데이터베이스를 먼저 방문하십시오. –

답변

3

음 .. 당신이 할 수있는 한 가지가 GUID를 생성하고 GUID를 대신 자동 증가 ID를 사용하는 경우 폴더 이름 대신

string uniqueDirectory = System.Guid.NewGuid().ToString("N"); 
System.IO.Directory.CreateDirectory("..Uploads/"+uniqueDirectory); 
//handle upload, save file, errors, etc.. 
... 
//now that the file is uploaded save to the database 
File newFile = new File(); 
newFile.FolderName=uniqueDirectory; 
db.AddFile(newFile); 
db.Save(); 
관련 문제