0

"~Content/Documents"アップロードされたすべてのファイルを保持するフォルダーにいくつかのファイルがあります。私の場合、ユーザーは1つのファイルしかアップロードできません。

ユーザーが自分のファイルをアップロードできるアップロード部分を実行しました。

if (file.ContentLength > 0)
{
    var fileName = Path.GetFileName(file.FileName);
    var fullpath = System.Web.HttpContext.Current.Server.MapPath("~/Content/Documents");
    file.SaveAs(Path.Combine(fullpath,"document"+Path.GetExtension(fileName)));
}

私の問題は、ユーザーがどちらの".doc", ".docx", ".xls", ".xlsx", or ".pdf"形式のファイルもアップロードできることです。".doc"これで、ユーザーがフォーマットのファイルをアップロードすると、フォルダーにアップロードされます。後で同じユーザーが".pdf"、フォルダにアップロードされている形式のファイルをアップロードできます。つまり、ユーザーは2つのファイルをアップロードできます。

今私がしたいのは:
特定のユーザーが彼のドキュメントをアップロードするとき:
->ユーザーによってアップロードされたドキュメントがそのフォルダーにあるかどうかを検索します。つまり、拡張子が異なる特定のファイル名が存在するかどうか。
->ファイル名が別の拡張子ですでに存在する場合は、そのファイルを削除して新しいファイルをアップロードします。

4

3 に答える 3

4

これを試してください、ちょうど別の方法。ファイル名が"document"

string[] files = System.IO.Directory.GetFiles(fullpath,"document.*");
foreach (string f in files)
{
   System.IO.File.Delete(f);
}

したがって、コードは次のようになります。

if (file.ContentLength > 0)
{
    var fileName = Path.GetFileName(file.FileName);
    var fullpath = System.Web.HttpContext.Current.Server.MapPath("~/Content/Documents");

    //deleting code starts here
    string[] files = System.IO.Directory.GetFiles(fullpath,"document.*");
    foreach (string f in files)
    {
       System.IO.File.Delete(f);
    }
    //deleting code ends here
    file.SaveAs(Path.Combine(fullpath,"document"+Path.GetExtension(fileName)));
}
于 2012-12-07T09:08:35.967 に答える
2

このような何かがトリックを行う必要があります

  var files = new DirectoryInfo(fullpath).GetFiles();
  var filesNoExtensions = files.Select(a => a.Name.Split('.')[0]).ToList();
    //for below: or 'document' if that's what you rename it to be on disk
  var fileNameNoExtension = fileName.Split('.')[0]; 
  if (filesNoExtensions.Contains(fileNameNoExtension))
  {
    var deleteMe = files.First(f => f.Name.Split('.')[0] == fileNameNoExtension);
    deleteMe.Delete();
  }
  file.SaveAs(Path.Combine(fullpath,"document"+Path.GetExtension(fileName)));
于 2012-12-07T08:57:39.457 に答える
0

拡張子のない新しいファイルのファイル名を取得し、アップロード先のフォルダー内のすべてのファイル名をループして、名前が既に存在するかどうかを確認します。もしそうなら、古いアップロードを削除し、そうでなければアップロードします。

var info = new FileInfo("C:\\MyDoc.docx");
var filename = info.Name.Replace(info.Extension, "");
var files = Directory.GetFiles("YOUR_DIRECTORY").Select(f => new FileInfo(f).Name);

if (files.Any(file => file.Contains(filename)))
{
    //Delete old file
}
//Upload new file
于 2012-12-07T09:03:28.443 に答える