1:ntko office文档控件如何保存文档到服务器?
调用ntko office文档控件的SaveToUrl(url,filefieldname,cpara,filename,htmlform)方法即可把控件中打开的文档提交到url参数指向的服务器CGI程序或者页面(asp,jsp,servlet等).url负责处理文档控件提交的数据.
由于控件采用了标准http协议提交数据,后台处理控件提交的数据跟处理表单提交的<input type=file>完全一样,服务器也不需要安装其它组件.
SaveToUrl()方法的返回值就是url指向页面的执行完后整个页面的内容.如果后台url程序有错误,保存不成功.控件就会提示"文件传输错误",并且SaveToUrl()方法的返回值中就包含了错误信息,可以通过类似下面的代码查
看错误信息,并对url页面进行排错(有时候其实后台程序并没有错误,只是访问服务器的用户没有修改服务器磁盘或者数据库的权限.):
var resTTML = 控件对象.saveToUrl(url,..);
alert(resTTML);
另外,如果在vs.net中,控件(如表单,按钮等)设置runat=server属性的问题。
假设edit.aspx页面中有<form id='myform' action='uploadedit.aspx' runat=server>,当 控件对象.saveToUrl(document.forms["myfomr"].action,**其它参数**)提交的时候,uploadedit.aspx会验证提交数据出现数据验证错误.请在'uploadedit.aspx'页面的"<% @page" 属性中加上enableViewStateMac="False"就没有问题了.
2:如何提交文档的同时提交其它数据?
通过对SaveToUrl(url,filefieldname,cpara,filename,htmlform)方法的cpara和htmlform参数赋值就可以想把一些与文档控件相关的其它数据传递到服务器.
例如c#中,页面中有如下代码:
<form id=myform enctype="multipart/form-data">
<input type=text value="values" name="textfield">
<input type=file name="filefiled">
.............其它数据............
</form>
<object id=control_OBJ ..........>
控件的引用代码
</object>
<script type=text/javascirpt>
control_OBJ.savetourl("url","key1=1&key2=2&key3=3","myform");
//cpara="key1=1&key2=2&key3=3";htmlform="myform"
</script>
后台处理代码:
string key1 = request["key1"];
string key2 = .................
string textfield = request.pramaters("textfield ");
................................
System.Web.HttpFileCollection uploadfiles=Request.Files;
System.Web.HttpPostedFile thefile ;
for(int i=0;i<uploadfiles.Count;i++)
{
if(uploadfiles.GetKey(i).ToUpper()=="filefiled")
{
thefile = uploadfiles[i];
}
}
................................
就可以得到:key1="1",key2="2",textfield ="values",
并且可以通过thefile.saveas()方法将表单中的附件保存起来.
您可以查看<<ntko office文档控件开发接口参考>>了解cpara以及htmlform的具体使用方法.
|