2013-05-28 2 views
1

현재 내 사이트를 통해 이미지를 업로드 할 때 이미지가 "image.jpg"로 이름이 바뀌는 것과 같은 디렉토리에있는 것처럼 iPads에서 문제를 다루고 있습니다. 문제가 발생할 수 있습니다 .. 그래서 파일의 이름을 바꾸거나 그 끝에 증분 번호를 추가하는 것을 막으려 고합니다. 그러나 제대로 작동하지 않습니다.존재하는 경우 이름을 기반으로 파일 이름 바꾸기

이 작은 스 니펫을 사용해 보았지만 해결하지 못했습니다.

if(File.Exists(filename)) 
{ 
    fileName = String.Format("{0}({1}", fileName, count++); 
    inputFile.PostedFile.SaveAs(String.Format("{0}\\{1}", directory, fileName)); 
} 
else 
{ 
    inputFile.PostedFile.SaveAs(String.Format("{0}\\{1}", directory, fileName)); 
} 
        } 
+0

을 시도 :) .. 당신을 도움이되기를 바랍니다,하지만 당신은''확인하고 File.Exists' fileName'에'filename'이 도처에. C#은 대소 문자를 구분합니다. – Tim

+0

'File.Exists (filename)'는 정상적으로 작동해야합니다.'count'를 검사 할 것인가? 문제를 일으킬 때마다 같은 값입니까? – jarvanJiang

+0

그것은 오타 였지만 여전히 작동하지 않습니다. P –

답변

1

File.Exists(filename) 파일이 존재하는지 여부를 확인할 수있는 완전한 파일 경로가 필요합니다.

하지만 라인 inputFile.PostedFile.SaveAs에서

, 당신은

directory + "//" + fileName로 파일 경로 합치된다.

fileName은 실제로 전체 경로 또는 확장자가 실제 파일 이름으로 구성되어 있습니까? fileName가 fullpath에 구성되어있는 경우가 위치를 무효를 가리 것처럼

inputFile.PostedFile.SaveAs이 작동하지 말아야하며, fileName 그냥 파일 이름이 아닌 전체 경로로 구성되어있는 경우, 다음, File.Exists이 작동하지 않아야합니다. 어느 쪽이든 당신의 논리에는 결함이 있습니다.

변경 사항은 무엇입니까?

또한 카운터를 사용하는 대신 DateTime.Now.ToString("hhmmddttmmss")fileName에 추가하여 고유하게 만드십시오.

+0

너무 빨리 Manish! DateTime 접근법은 확실히 좋은 팁입니다. – Lummo

+0

'DateTime.Now.ToString ("hhttmmss")는 고유성을 보장하지 않습니다. 동시에 두 개의 파일을 업로드 할 수 있습니다. 'Guid.NewGuid(). ToString()'이 더 좋을 것입니다. –

+0

나는이 일을 위해 날짜 형식을 사용하는 것에 대해 결코 생각하지 못했다. 감사한다. –

1

당신이 호출 할 때 :

if(File.Exists(filename)) 

이 파일 이름을 사용하면 파일을 저장할 위치로 디스크의 전체 경로가 포함되어 있는지 확인합니다.

모양에서 보면 자체 파일 이름 대신 Path.Combine (directory, fileName)을 사용하는 것이 좋습니다.

1

당신은 항상 새로운 파일 될 수 있도록

filename = filename + DateTime.Now.Ticks.ToString(); 

와 파일 이름을 생성 할 수 있습니다. 이전 파일과 새 파일을 그대로 유지한다는 의미입니다.

나는

0

그냥 오타가 될 수이

fileName= Path.Combine(directory,fileName); 
    if(File.Exists(filename)) 
    { 
     fileName = fileName + DateTime.Now.Ticks;   
    } 
    inputFile.PostedFile.SaveAs(fileName); 
관련 문제