2016-02-26 22 views
0

我正在开发一个ASP.NET MVC页面,让用户在数字签名后上传一个PDF文档。 但由于某些原因,即使在正确显示图形表示时,签名在上载文档时也会被破坏。 下面是我用上传文件的代码:从ASP.NET MVC上传后丢失签名XMLHttpRequest

$(document).on('click', 'input[value=Upload]', function (e, argument) { 
     var formdata = new FormData(); 
     for (i = 0; i < document.getElementById('FileBox').files.length; i++) { 
      formdata.append(document.getElementById('FileBox').files[i].name, document.getElementById('FileBox').files[i]); 
     } 

     var url = '@Url.Action("Upload", "Test")' 

     var xhr = new XMLHttpRequest(); 
     xhr.open('POST', url); 
     xhr.send(formdata); 
     xhr.onreadystatechange = function() { 
      if (xhr.readyState == 4 && xhr.status == 200) { 
       var response = $.parseJSON(xhr.response); 
       alert(response.result); 
      } 
     } 
    }); 

我检索在控制器上载的文件,如下所示:

Public Function PostedFiles() As List(Of Byte()) 
    Dim retval As New List(Of Byte()) 
    Dim oRequest As HttpRequest = Web.HttpContext.Current.Request 
    For Each sFileKey As String In oRequest.Files 
     Dim oFile As HttpPostedFile = oRequest.Files(sFileKey) 
     If oFile.ContentLength > 0 Then 
      Dim iLength As Integer = oFile.ContentLength 
      Dim oBytes(iLength) As Byte 
      Dim oStream As System.IO.Stream = oFile.InputStream() 
      oStream.Read(oBytes, 0, iLength) 
      retval.Add(oBytes) 
     End If 
    Next 
    Return retval 
End Function 

在SQL Server数据库持久化的字节数组后,当我从数据库中取回时,不再有任何签名,只是它的图形表示。

+0

您在SQL Server数据库*中持久保存字节数组后观察到问题*;你有没有检查过''PostedFiles()'*返回的文件在持久化到数据库之前是否已经有这个问题?如果他们不这样做,你会在错误的代码中寻找罪魁祸首。 – mkl

回答

0

感谢Mkl的评论,我意识到自从文档在浏览器中显示后我没有签名。在Acrobat Reader中打开持久文件成功显示签名。