2017-11-01 1 views
0

데이터베이스에 저장하는 동안 문제가 있습니다. 업로드 할 때 중복 된 데이터를 계속 삽입합니다. 나는 그것을 어떻게 막을 수 있는지 알 수 있습니까? 내 코드에 오류가 없습니다.업로드하는 동안 데이터가 중복됩니다.

asp.net

<asp:FileUpload ID="FileUpload" runat="server" AllowMultiple="true" /> 

vb.net

Try 
     If Me.FileUpload.PostedFile.FileName = "" Then 
      Throw New Exception("Please Attach file!") 
     Else 

      For Each postedfile As HttpPostedFile In FileUpload.PostedFiles 

       fileName = Me.lblId2.Text & "_" & Path.GetFileName(FileUpload.PostedFile.FileName) 
       FileUpload.PostedFile.SaveAs((Server.MapPath("~/Attachment/UploadFile_/") + fileName)) 
       FilePath = "~/Attachment/UploadFile_/" + fileName 
       filesize = Convert.ToInt32(fileName.Length) 

       params.Clear() 
       strsql = " INSERT INTO tb_upload " & _ 
         " (UploadDT, cr_runnum,DestFileName,DataSize, FileName, Remarks) VALUES " & _ 
         " (@UploadDT, @cr_runnum, @DestFileName, @DataSize, @FileName, @Remarks)" 

       params.Add("@UploadDT", Format(datetimenow, "dd MMM yyyy hh:mm:ss tt")) 
       params.Add("@cr_runnum", Me.lblId2.Text.Trim) 
       params.Add("@DestFileName", FilePath) 
       params.Add("@DataSize", filesize) 
       params.Add("@FileName", fileName) 
       params.Add("@Remarks", Me.txtRemarks.Text) 

       iResult = Common.execNonQuery(strsql, Common.txn, params) 

       If iResult = 0 Then 
        Throw New Exception("Data insertion failed. Please contact MIS Administrator!") 
       End If 

      Next 


     lblUnsuccess.Text = String.Format("{0} files have been uploaded successfully.", FileUpload.PostedFiles.Count) 
     End If 

    Catch ex As Exception 
     Me.lblUnsuccess.Text = ex.Message 
    Finally 
     Common.CloseConn() 
    End Try 

기능 간부가 아닌 쿼리 refer here exec non query

+1

filesize = Convert.ToInt32 (fileName.Length) 이것은 파일의 크기를 알려주지 않습니다. 파일 이름의 길이 만 제공합니다. –

+0

사용자가 여러 개의 이미지를 업로드 할 수 있도록 허용하지만 첫 번째 이미지는 계속 저장되지만 db는 첫 번째 이미지와 중복 기록이 있습니다. – user8101021

+0

여기에 문제가 없습니다. 간부 인 아닌 쿼리 표시 기능 –

답변

0

문제는 당신이 각 루프 변수 만로 postedFile을 사용하고 있다는 것입니다 루프를 통과 할 때 postedFile 대신 FileUpload.PostedFile을 사용하고 있습니다. FileUpload.PostedFile은 게시 파일의 첫 번째 요소를 제공하는 바로 가기입니다.

enter image description here

또한, 코멘트에 언급 user7452368로, fileName.Length 파일 이름 문자열이 아닌 파일의 크기의 길이입니다. 여기에 somebody else's question about how to get the file size이 있습니다.

관련 문제