当前位置:编程学习 > C#/ASP.NET >>

关于javascript xml bin.base64存储文件到数据库

读取文件保存到xml中,然后发送到后台保存
l_node6.dataType = "bin.base64";
var ado_stream = new ActiveXObject("ADODB.Stream");
ado_stream.Type = 1;  // 1=adTypeBinary  
ado_stream.Open();  
ado_stream.LoadFromFile(filename); 
l_node6.nodeTypedValue = ado_stream.Read(-1); // -1=adReadAll 
ado_stream.Close();  
将文件读取成二进制然后64编码。组成xml利用xmlhttp发送xml串到后台
我的后台为c#,然后用 Convert.FromBase64String来解析数据的时候提示
Base-64 字符数组的无效长度。
请高手帮助!谢谢!


一下是代码

//保存上传的文件
    function SaveFiles()
    {
// create XML document with default header and primary node 
//var strXmlParamString = "<root>"; 
var xml_dom = new ActiveXObject("MSXML2.DOMDocument"); 
xml_dom.loadXML('<?xml version="1.0" ?> <root/>'); 

for (var i = 0; i < _fileList.length; ++ i)
        {
var filename = _fileList[i];
if(filename.length > 0)
{
var sarray = new Array();  
sarray = filename.split('\\');
var name = sarray[sarray.length-1];
var names = new Array();
names = name.split('.');
var filetype = names[1]
//strXmlParamString += "<file>";
//增加一个图片节点
var l_node1 = xml_dom.createElement("file"); 
                xml_dom.documentElement.appendChild(l_node1);
        
var index = i + 1;
//主键
var l_node2 = xml_dom.createElement("SYFC_ID");
l_node2.text = _syfc_id;
l_node1.appendChild(l_node2);
alert(xml_dom.xml);
//strXmlParamString +="<SYFC_ID>" + _syfc_id + "</SYFC_ID>";
//图片类型 
var l_node3 = xml_dom.createElement("filetype");
l_node3.text = filetype;
l_node1.appendChild(l_node3);

//图片标题
var l_node4 = xml_dom.createElement("fileTitle");
var fileTitle = _getFileTitle(index);
l_node4.text = fileTitle;
l_node1.appendChild(l_node4);
//图片描述
var l_node5 = xml_dom.createElement("fileDesc");
var fileDesc = _getFileDesc(index);
l_node5.text = fileDesc;
l_node1.appendChild(l_node5);
//图片内容 base64存储 
var l_node6 = xml_dom.createElement("fileContent");

l_node1.appendChild(l_node6);
l_node6.dataType = "bin.base64";
var ado_stream = new ActiveXObject("ADODB.Stream");
ado_stream.Type = 1;  // 1=adTypeBinary  
    ado_stream.Open();  
   
    ado_stream.LoadFromFile(filename); 
    l_node6.nodeTypedValue = ado_stream.Read(-1); // -1=adReadAll 
    ado_stream.Close();  
}
        }
        var strURL = 'cmdSaveFiles.aspx';
    var strResult = ExecServerPrgm(strURL, 'POST', 'param='  + xml_dom.xml);
//alert(_syfc_id+ "--" + _type);
if (strResult == -1)
{
alert ('执行该操作时出现异常!可能您的登录已经失效。请重新登录后重试。');
}else
{
if (strResult.toUpperCase() == 'TRUE')
{
alert ('保存成功!');
}
else
{
alert ('保存出错!请重新保存!');
}
}
    } --------------------编程问答-------------------- 代码太乱,看不清 --------------------编程问答-------------------- up --------------------编程问答-------------------- up --------------------编程问答-------------------- 你是哪里出问题 没说啊 
等高手 --------------------编程问答-------------------- Convert.FromBase64String来解析数据的时候提示 
Base-64   字符数组的无效长度。 

在C#后台中,无需base64解码,直接以一个数组参数接收数据即可。

比如:
public string UploadSoundFileData(string FileName,  byte[] filedata)
{
string filePath = "C:\\"+FileName;
        try
        {
            using (FileStream fs = File.Open(filePath, FileMode.Create))
            {
                fs.Write(filedata, 0, filedata.Length);
            }
        }
        catch (Exception ex)
        {
            return ex.Message;
        }

        return "ok";
} --------------------编程问答-------------------- 这样不行。。存的文件大小和原文件不一致。而且图片文件打开什么也没有! --------------------编程问答-------------------- 不知道谁有做过类似的。利用javascript、xml和xmlhttp上传文件的?弄了好几天了。都没有办法。郁闷啊! --------------------编程问答-------------------- 应该可以的,我以前写的上传文件都是这样写的呀,你先在服务器端保存成文件看看能不能打开,如果可以打开,但存到数据库中后就不行了,那可能是在保存到数据库中的时候编码或者其它的问题引起的。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,