2013-05-28 3 views
1

В настоящее время я имею дело с проблемой в iPads, когда вы загружаете изображение через мой сайт, изображение переименовывается в «image.jpg», что является проблемой, как если бы он находился в том же каталоге может вызвать проблемы .. поэтому я пытаюсь остановить его переименование файла ИЛИ добавить инкрементный номер на его конец, однако я не могу заставить это функционировать правильно.переименование файла на основе, если оно существует

Я использовал этот небольшой фрагмент кода, чтобы исправить его, однако он, похоже, не работает.

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

Может быть просто опечатка, но вы должны 'filename' в' File.Exists' проверить и '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

Слишком быстро Маниш! подход 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); 
Смежные вопросы