0
ALTER PROCEDURE INSERT_PDF
    @DOCUMENT VARBINARY(MAX) = NULL
AS
BEGIN
    INSERT INTO PDF
           (Document)
     VALUES
           (@DOCUMENT)
END
GO

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;
using Newtonsoft.Json;

namespace pdf.Controllers
{
    public class pdfController : ApiController
    {
        [HttpPost]
        [ActionName("insertPdf")]
        public int insertReceiptDocument(MemoryStream fileToPut)
        {
            //int varID = 0;
            fileToPut = new MemoryStream();
            byte[] document = fileToPut.ToArray();
            SqlConnection myConnection = new SqlConnection();
            myConnection.ConnectionString = ConfigurationManager.ConnectionStrings["ERPConnectionString"].ConnectionString;
            SqlCommand sqlCmd = new SqlCommand();
            //DateTime now = DateTime.Now;
            sqlCmd.CommandType = CommandType.StoredProcedure;
            sqlCmd.CommandText = "INSERT_PDF";
            sqlCmd.Connection = myConnection;
            sqlCmd.Parameters.Add("@DOCUMENT", SqlDbType.VarBinary, document.Length).Value = document;
            myConnection.Open();
            int rowInserted = sqlCmd.ExecuteNonQuery();
            myConnection.Close();
            return 1;
        }
    }
}

当使用 web api 在邮递员中传递文件时,0x 被插入到数据库中。想要将选定文件的二进制数据插入数据库。那么,如何在web api中将二进制数据形式的pdf文件插入到数据库中呢?

4

1 回答 1

0

您甚至在使用二进制数据之前就对其进行了处理。在您上面的方法中,删除以下代码行:

fileToPut = new MemoryStream();

那行代码会删除从fileToPut参数中接收到的值,因此您最终不会将二进制数据插入数据库。

于 2019-12-03T02:14:38.747 回答