【问题标题】:data duplicates while upload muiltiple image上传多张图片时数据重复
【发布时间】:2018-04-13 08:19:31
【问题描述】:

我在保存到数据库时遇到问题。当我上传时,它会继续插入重复数据。我可以知道如何预防吗?我下面的代码没有错误。

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

【问题讨论】:

  • filesize = Convert.ToInt32(fileName.Length) 这不会给你文件的大小。它只会给出文件名的长度。
  • 我允许用户上传多张图片,它会继续保存选择的第一张图片,但数据库与第一张图片有重复记录。
  • 您的问题不在这里。给我看你的 exec 非查询函数
  • 请参考图片。
  • 它与其他插入代码一起工作正常。仅在此文件上传时发生。

标签: sql asp.net vb.net upload


【解决方案1】:

问题是您使用postedFile 作为循环变量,但每次循环时,您都使用FileUpload.PostedFile 而不是postedFile。 FileUpload.PostedFile 是一种快捷方式,可以为您提供 PostedFiles 的第一个元素。

另外,正如 cmets 中提到的 user7452368,fileName.Length 是 fileName 字符串的长度,而不是文件的大小。这是somebody else's question about how to get the file size

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    相关资源
    最近更新 更多