2016-07-25 4 views
-5

このコードでは、C#でのアップロードに問題があります。オペレータ '<'は、 'グループのメソッド'と '文字列'のオペランドには適用できません。C#

複数の重複した名前のファイルをアップロードしないようにする必要があります。

エラーは次のとおりです。

演算子「<」 と「文字列」問題は何

「メソッドのグループ」タイプのオペランドに適用することはできませんか?

以下のコードは、事前におねがいします。

DirectoryInfo objDir = 
    new DirectoryInfo(Server.MapPath("\\images\\")); 

string sFileName = Path.GetFileName(hpf.FileName); 
string sFileExt = Path.GetExtension(hpf.FileName); 

FileInfo[] objFI = 
    objDir.GetFiles(sFileName.Replace(sFileExt, "") + ".*"); 

if (objFI.Length > 0) 
{ 
    foreach (FileInfo file in objFI) 
    { 
     string sFileName1 = objFI[0].Name; 
     string sFileExt1 = Path.GetExtension < (objFI[0].Name); // LINE ERROR 

     if (sFileName1.Replace(sFileExt1, "") == 
       sFileName.Replace(sFileExt, "")) 
     { 
      iFailedCnt += 1;  // NOT ALLOWING DUPLICATE. 
      break; 
     } 
    } 
} 

EDIT#1

protected void Upload_Files(object sender, EventArgs e) 
    { 
     if (fileUpload.HasFile)  // CHECK IF ANY FILE HAS BEEN SELECTED. 
     { 
      int iUploadedCnt = 0; 
      int iFailedCnt = 0; 
      HttpFileCollection hfc = Request.Files; 
      lblFileList.Text = "Select <b>" + hfc.Count + "</b> file(s)"; 

      if (hfc.Count <= 10) // 10 FILES RESTRICTION. 
      { 
       for (int i = 0; i <= hfc.Count - 1; i++) 
       { 
        HttpPostedFile hpf = hfc[i]; 
        if (hpf.ContentLength > 0) 
        { 
         if (!File.Exists(Server.MapPath("\\images\\") + 
          Path.GetFileName(hpf.FileName))) 
         { 
          DirectoryInfo objDir = 
           new DirectoryInfo(Server.MapPath("\\images\\")); 

          string sFileName = Path.GetFileName(hpf.FileName); 
          string sFileExt = Path.GetExtension(hpf.FileName); 

          // CHECK FOR DUPLICATE FILES. 
          FileInfo[] objFI = 
           objDir.GetFiles(sFileName.Replace(sFileExt, "") + ".*"); 

          if (objFI.Length > 0) 
          { 
           // CHECK IF FILE WITH THE SAME NAME EXISTS 
            (IGNORING THE EXTENTIONS). 
           foreach (FileInfo file in objFI) 
           { 
            string sFileName1 = objFI[0].Name; 
            string sFileExt1 = Path.GetExtension(objFI[0].Name); 

            if (sFileName1.Replace(sFileExt1, "") == 
              sFileName.Replace(sFileExt, "")) 
            { 
             iFailedCnt += 1;  // NOT ALLOWING DUPLICATE. 
             break; 
            } 
           } 
          } 
          else 
          { 
           // SAVE THE FILE IN A FOLDER. 
           hpf.SaveAs(Server.MapPath("\\images\\") + 
            Path.GetFileName(hpf.FileName)); 
           iUploadedCnt += 1; 
          } 
         } 
        } 
       } 
       lblUploadStatus.Text = "<b>" + iUploadedCnt + "</b> file(s) Uploaded."; 
       lblFailedStatus.Text = "<b>" + iFailedCnt + 
        "</b> duplicate file(s) could not be uploaded."; 
      } 
      else lblUploadStatus.Text = "Max. 10 files allowed."; 
     } 
     else lblUploadStatus.Text = "No files selected."; 
    } 
+1

'Path.GetExtension <(objFI [0] .Name)'はどうすればよいですか?私が考えている限り、これはちょうどタイプミスです... –

+0

この検証は必要ありません 'if(objFI.Length> 0)' – Disappointed

+1

これは単にタイプミスで、<引数の前に<があります。しかし、私は_Path.GetFileNameWithoutExtension_があなたのコードを多く簡略化できると言っています。 – Steve

答えて

2

拡張子を取得関数であり、あなたはそれとその()

<この置き換えがありますと

string sFileExt1 = Path.GetExtension < (objFI[0].Name); 

を:

string sFileExt1 = Path.GetExtension(objFI[0].Name); 
+0

返信いただきありがとうございます。今はエラーはありませんが、重複したファイルの場合、ファイルはアップロードされませんが、アップロードされないファイルの数は常に0です。私の最初の質問で** EDIT#1 **をご覧ください。 –

+2

@AntonioMailtraqそれは別の質問です。 [カメレオンの質問はされていません](http://meta.stackexchange.com/questions/43478/exit-strategies-for-chameleon-questions)。リンクのポイント4を参照してください。 – spender

+0

それをデバッグし、あなたのロジックが動作しない場所を見てください。また、Steveのコメントをチェックして、コードクリーナーを作成してください。 –

関連する問題