【问题标题】:Save Files to SQL Server Database using ajax and asp.net使用 ajax 和 asp.net 将文件保存到 SQL Server 数据库
【发布时间】:2018-06-07 06:44:15
【问题描述】:

我使用 ajax 和 asp.net 将文件插入到我的 sqlserver2012 数据库中,我得到了如下所示的错误结果:
我的错误 本地主机:6446 syas: [对象对象]

在 HTML 和 ajax jquery 中

$(document).ready(function () {
	$('#btn_upload').click(function () {
		var file = $('#uploadefile').get(0).files;
		var data = new FormData;
		data.append("upload", file[0]);

		$.ajax({
			type: "POST",
			method: 'POST',
			url: 'WebService1.asmx/insertFileupload',
			//contentType: 'application/json;charset=utf-8',
			data: data,
			contentType: false,
			processData:false,
			success: function (data) {
				alert('s');
			},
			error: function (err) {
				alert(err);
			}
		});
	});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="btn_upload" type="button" value="example" /><br />
<input id="uploadefile" type="file" />

我的网络服务功能 enter image description here

[WebMethod]
public void insertFileupload(attachment data)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TesterConnectionString1"].ConnectionString);
    using (con)
    {
        SqlCommand cmd = new SqlCommand("attach_insert", con);
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        cmd.Parameters.Add(new SqlParameter()
        {
            ParameterName = "@image",
            Value = data.image
        });

        con.Open();
        cmd.ExecuteNonQuery();
    }   
}

【问题讨论】:

    标签: javascript jquery asp.net ajax web-services


    【解决方案1】:

    将以下属性添加到您的网络服务类

    [System.Web.Script.Services.ScriptService]
    

    除上述之外,还为您的 webmethod 添加以下属性

    [ScriptMethod]
    

    如果上述更改仍然无效,请确保您在 web.config 中添加了以下设置

    <system.web>
    <webServices>
      <protocols>
        <add name="HttpGet"/>
        <add name="HttpPost"/>
      </protocols>
    </webServices>
    

    更新 上传方法不需要传任何参数。查看以下代码sn-p。

    WebService.asmx

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.IO;
    using System.Linq;
    using System.Web;
    using System.Web.Script.Services;
    using System.Web.Services;
    
    namespace WebApplication10
    {
        /// <summary>
        /// Summary description for WebService1
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
        [System.Web.Script.Services.ScriptService]
        public class WebService1 : System.Web.Services.WebService
        {
            [ScriptMethod]
            [WebMethod]
            public void UploadFile()
            {
                if (HttpContext.Current.Request.Files.AllKeys.Any())
                {
                    // Get the uploaded image from the Files collection
                    var httpPostedFile = HttpContext.Current.Request.Files["UploadedImage"];
    
                    if (httpPostedFile != null)
                    {
                        //var fileSavePath = Path.Combine(Server.MapPath("upload"), httpPostedFile.FileName);
                        //  var file = ConvertToByteArray(fileSavePath);
                        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TesterConnectionString1"].ConnectionString);
                        using (con)
                        {
                            SqlCommand cmd = new SqlCommand("attach_insert", con);
                            cmd.CommandType = System.Data.CommandType.StoredProcedure;
                            cmd.Parameters.Add("@image", SqlDbType.VarBinary,
                                (int)httpPostedFile.InputStream.Length).Value = httpPostedFile.InputStream;
                                con.Open();
                                cmd.ExecuteNonQuery();
                            }
                        }
                    }
                }
                public byte[] ConvertToByteArray(string varFilePath)
                {
                    byte[] file;
                    using (var stream = new FileStream(varFilePath, FileMode.Open, FileAccess.Read))
                    {
                        using (var reader = new BinaryReader(stream))
                        {
                            file = reader.ReadBytes((int)stream.Length);
                        }
                    }
                    return file;
                }
            }
        }
    

    WebForm1.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication10.WebForm1" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
    
                <input id="btn_upload" type="button" value="example" /><br />
                <input id="uploadefile" type="file" />
            </div>
        </form>
    </body>
    <script type="text/javascript">
    $(document).ready(function () {
    
        $('#btn_upload').on('click', function () {
    
          var data = new FormData();
          var files = $("#uploadefile").get(0).files;
          // Add the uploaded image content to the form data collection
          if (files.length > 0) {
               data.append("UploadedImage", files[0]);
          }
    
          // Make Ajax request with the contentType = false, and procesDate = false
          var ajaxRequest = $.ajax({
               type: "POST",
               url: "/WebService1.asmx/UploadFile",
               contentType: false,
               processData: false,
               data: data
               });
    
          ajaxRequest.done(function (xhr, textStatus) {
                        // Do other operation
                 });
       });
    });
    </script>
    </html>
    

    【讨论】:

    • 我添加了这个,但我得到了相同的错误,即“localhost:6446 syas: [object Object]”因为我想我不知道 webServices 中参数的类型是什么跨度>
    • @HelloItsMe 让我为您创建一个示例应用程序
    • 不工作我得到错误 fileNotFoundException is unhandled by user code
    • 确保 UploadedFiles 文件夹存在于根目录
    • 我检查了文件路径和文件夹是否存在,但在这段代码中出现错误“var stream = new FileStream(varFilePath, FileMode.Open, FileAccess.Read"
    猜你喜欢
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多