我正在尝试将数据上传到服务器,数据是blob

时间:2016-08-20 18:56:48

标签: javascript ajax filereader ashx

我正在尝试将数据上传到服务器并且数据是blob,问题是当文件为空时它会上传但是如果文件中包含任何数据则不会     以下是我的代码

function uploadData() 
{
    var param = {
        subjectName: $("#ipName").val(),
        subjectID: $("#DocSubject").val(),
        typeID: $("#DocType").val(),
        year: $("#ipDate").val(),
        data: dataURL.substr(dataURL.indexOf(',') + 1, dataURL.length),
 };
  Handler("Json", param, "UploadData");
}
var dataURL;
var handleFiles = function (event) {

    var input = event.target;

    var reader=new FileReader();
    reader.onload=function(){
         dataURL=reader.result;
        var output=document.getElementById('ipSelect');
        output.src=dataURL;
    };
    reader.readAsDataURL(input.files[0]);

}

Handler是.ashx文件,它将我的数据保存到sql server。我不知道我错过了什么。

1 个答案:

答案 0 :(得分:0)

FileReader() .readAsDataURL()方法异步返回结果。您可以在dataURL uploadData()事件时将load传递给FileReader来电。另请注意,reader.resultdataURL是从.readAsDataURL()返回的data URI,而不是Blob

function uploadData(dataURL) 
{
    var param = {
        subjectName: $("#ipName").val(),
        subjectID: $("#DocSubject").val(),
        typeID: $("#DocType").val(),
        year: $("#ipDate").val(),
        data: dataURL.substr(dataURL.indexOf(',') + 1, dataURL.length)
 };
  Handler("Json", param, "UploadData");
}
var dataURL;
var handleFiles = function (event) {

    var input = event.target;

    var reader=new FileReader();
    reader.onload=function(){
         dataURL=reader.result;
        var output=document.getElementById('ipSelect');
        output.src=dataURL;
        uploadData(dataURL); // call `uploadData()` with `dataURL` as parameter
    };
    reader.readAsDataURL(input.files[0]);

}