【问题标题】:Classic ASP recordset insert and file upload经典 ASP 记录集插入和文件上传
【发布时间】:2019-01-15 17:30:45
【问题描述】:

我的任务是向使用 Classic ASP 的基于 Web 的应用程序添加文件上传。不幸的是,我不被允许使用任何其他技术,并且被告知这是它所建议的任何东西,但 ASP 在这种情况下无济于事。

在提交带有一些输入字段和一个文件字段的简单表单时调用带有 $.ajax 的表单 POST,该表单指向通过 request.form 处理记录集插入的经典 ASP 文件。我添加了 contentType: false 希望 enctype="multipart/form-data" 但收到以下错误:

对象不支持此属性或方法:'Binary',因为我在下面发布的插入中更改了 request.form,但它也不适用于 request.form。使用 request.form 我收到此错误:[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression。

  $.ajax({
type   : 'POST',
url    : 'manipulateData.asp?sqlType='+newdbTable+'&sqlRecordId='+recordId+'',
data   : formData,
    encode : true,
contentType : false,
success: function(data) {
    // do something with data
},
error: function(data) {
    console.log("ERROR" + JSON.stringify(data));
}

})

在经典 ASP 文件中,operatedData.asp 是一个连接字符串,它在 case 语句中被调用,下面是更经典的 ASP 文件,用于单个文件上传,如下所示。

我正在尝试实施 Shadow Wizards 解决方案,但想先尝试一下,因为我试图让事情变得简单。

 cn.execute("INSERT INTO CONTENT (contentTitle, contentContent, contentDate, categoryId, userLevel) VALUES ('" & Request.Form("contentTitle") & "','" & Request.Form("contentContent") & "','" & Request.Form("contentDate") & "','" & Request.Form("categoryTitle") & "','" & Request.Form("userLevel") & "')")

' TEST FILE UPLOAD
 Dim objUpload 
 Dim strFile, strPath
 ' Instantiate Upload Class '
 Set objUpload = New clsUpload
 strFile = objUpload.Fields("file").FileName
 strPath = server.mappath("/files") & "/" & strFile
 ' Save the binary data to the file system '
 objUpload("file").SaveAs strPath
 Set objUpload = Nothing

当我已经准备好 request.form 和 request.binary 不能同时使用时,我正在尝试做的事情是否可行?如果没有,那还有什么替代方案?

【问题讨论】:

    标签: ajax iis asp-classic


    【解决方案1】:

    我不喜欢这个记录的答案,但在成功时调用另一个函数然后获取文件的路径,然后在另一个 ajax 调用中将其传递给经典 ASP 文件以上传工作。

      $.ajax({
        type   : 'POST',
        url    : 'manipulateData.asp?sqlType='+newdbTable+'&sqlRecordId='+recordId+'',
        data   : formData,
        encode : true,
        contentType : false,
        success: function(data) {
        // file upload function
          uploadFile()
        },
        error: function(data) {
          console.log("ERROR" + JSON.stringify(data));
         }
        })
    

    还有上传ajax

    function uploadFile(formData) {
    var data = new FormData();
    $.each($('#file1')[0].files, function(i, file) {
        data.append('file-'+i, file);
    });
    
    
      $.ajax({
                type        : 'POST',
                 url         : 'uploadFileTest.asp',
                data        : data,
                async: true,
                cache: false,
                contentType: false,
                processData: false,
                success: function(data) {
                    // do something else here or not
                },
                error: function(data) {
                    // SHOW ERROR
                    console.log("ERROR" + JSON.stringify(data));
                }
            })
    } 
    

    我仍然非常想知道是否可以消除第二个函数调用,或者这是否是 Classic ASP 处理 FORM 和 BINARY 帖子的本质,它们必须分开?

    【讨论】:

      猜你喜欢
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多