Javascript 以64为基数的字符串的字符长度是多少
我正在转换客户端上excel导出的缓冲区,需要下载它。我正在将缓冲区转换为一个base 64字符串,然后通过线路发送它,并在控制器的服务器上对其进行解码 excel文档的大小是否有限制 我在网上查过了,但没有确切的答案Javascript 以64为基数的字符串的字符长度是多少,javascript,jquery,base64,exceljs,Javascript,Jquery,Base64,Exceljs,我正在转换客户端上excel导出的缓冲区,需要下载它。我正在将缓冲区转换为一个base 64字符串,然后通过线路发送它,并在控制器的服务器上对其进行解码 excel文档的大小是否有限制 我在网上查过了,但没有确切的答案 // _exportToSpreadsheet is FALSE -> save dialog will open for the "normal" exporting to excel if (_exportToSpreadsheet === true)
// _exportToSpreadsheet is FALSE -> save dialog will open for the "normal" exporting to excel
if (_exportToSpreadsheet === true) {
var workbook = new ExcelJS.Workbook();
var worksheet = workbook.addWorksheet('Main sheet');
DevExpress.excelExporter.exportDataGrid({
component: e.component,
worksheet: worksheet
}).then(function () {
workbook.xlsx.writeBuffer().then(function (buffer) {
// convert to base 64 to pass to the server...
var base64 = btoa(
new Uint8Array(buffer)
.reduce((data, byte) => data + String.fromCharCode(byte), '')
);
$.ajax({
url: 'Spreadsheet/Spreadsheet/SpreadsheetFromDxGrid',
dataType: 'json',
type: 'POST',
data: { spreadsheetData: base64 },
success: function (data) {
window.open(
rootPath + 'SpreadSheet/SpreadSheet/SpreadSheet?fileIdentifier=' + data.fileIdentifier,
'_blank' // <- This is what makes it open in a new window.
);
}
});
});
});
// cancel the call since we are going to open in a new window for exporting to dev express spreadsheet
e.cancel = true;
}
}
服务器:
[HttpPost]
public ActionResult SpreadsheetFromDxGrid(string spreadsheetData)
{
string fileIdentifier = Guid.NewGuid().ToString();
// Convert the buffer array that was generated to a base 64 string back to a byte array
byte[] spreadsheetDataArray = Convert.FromBase64String(spreadsheetData);
fileIdentifier = UploadControlHelper.TempFileUpload(fileIdentifier + SharedConstants.ExcelExtension, spreadsheetDataArray);
// return file identifier to redirect to the spreadsheet controller...
return Json(new { fileIdentifier });
}
我只想知道这会在哪里失败,或者是否有更好的方法来做到这一点
[HttpPost]
public ActionResult SpreadsheetFromDxGrid(string spreadsheetData)
{
string fileIdentifier = Guid.NewGuid().ToString();
// Convert the buffer array that was generated to a base 64 string back to a byte array
byte[] spreadsheetDataArray = Convert.FromBase64String(spreadsheetData);
fileIdentifier = UploadControlHelper.TempFileUpload(fileIdentifier + SharedConstants.ExcelExtension, spreadsheetDataArray);
// return file identifier to redirect to the spreadsheet controller...
return Json(new { fileIdentifier });
}