CAD控件:把在网页编辑的DWG文件保存到服务器上
把在网页编辑的DWG文件保存到服务器上SaveDwgToURL把当前正在编辑的文件保存服务器上,该函数模拟一个文件表单提交来上传文件,在服务器端有个专门的程序,来处理文件的上传保存。
VC接口:
BOOL MxDraw::SaveDwgToURL(MXDRAWOCXHANDLE hOcx,
IN LPCTSTR pszServerUrl,
IN LPCTSTR pszServerProgramUrl, IN LPCTSTR pszComponentName
IN LPCTSTR pszPort,
OUT CString& sResponse
IN LPCTSTR pszFileTag
);
COM接口
bool SaveDwgToURL(string pszServerUrl,string pszServerProgramUrl,string pszFileTag,string pszPort)AxMxDrawXLib.AxMxDrawX的成员
参数:
hOcx 标识控件的句柄
pszServerUrl 服务器网址地址,如:www.mxdraw.com
pszServerProgramUrl 服务器的文件上传处理程序,如:upload.asp
IN LPCTSTR pszComponentName HTML组件名称,相当于一个HTML页面的Form中的中的file1
pszPort 服务处理端口. 如:_T("80")
sResponse 服务器返回的信息
pszFileTag 文件标志名称值,表单提交事件中filename值。是"Content-Disposition: form-data; name="file1"; filename="ymgcw.dwg"中的filename值。
默认为空,程序自动取一个临时值。
返回值
函数成功能,返回真。对于COM版函数,服务器返回信息通过GetLastError函数得到。
备注
模拟一个文件表单提交上传文件,详细例程参考sampleAspNet中"保存dwg文件到服务器"按钮 模拟的表单提交,向服务器发送的请求,使用Fiddler工具能看见 因为Fiddler的问题, Fiddler工具查看本地服务器请求内容时,本地服务器ip地址需要写成http://127.0.0.1.,而不能写成http://localhost 下面的代码调用效果
if (!MxDrawXCtrl_Obj.SaveDwgToURL("http://127.0.0.1.", "/Save.aspx", "ComponentName", "6046")) { var ret = MxDrawXCtrl_Obj.CallCustomFunction("Mx_GetLastError",""); alert(ret.AtString(0));} else { alert("成功");}
等同于这个代码,这个代码可以放到htm文件中,运行执行
《form action="Save.aspx"method="post" enctype="multipart/form-data"> <input id="File1" type="file" name="ComponentName" /><br /> <<input id="Submit1" type="submit" value="submit" />> </form》
参考例程:
function getcurpath()
{
var url=window.location.href;
var pos=url.lastIndexOf("\\");
if (pos==-1)
pos=url.lastIndexOf("/");
var path=url.substring(0,pos);
var sHttp = "http://";
var pos2 = path.indexOf(sHttp);
var path2;
if(pos2 == -1)
{
path2 = path;
}
else
{
path2 = path.substring(pos2 + sHttp.length);
}
return path2;
}
function savedwgurl()
{
MxDrawXCtrl_Obj = document.all.item("MxDrawXCtrl");
MxDrawXCtrl_Obj.focus();
MxDrawXCtrl_Obj.SaveDwgToURL(getcurpath(),"/saveannouce_upfile.asp","file1","80");
var app ;
app = new ActiveXObject("MxDrawX.MxDrawApplication");
alert(app.GetLastError() );
}
saveannouce_upfile.asp程序处理上传的文件,其代码可以参考samples\asp\ saveannouce_upfile.asp,在该程序中,调用upload.inc中的javascript程序,读取上传的文件表单数据流。
MxDrawXCustomFunction::Mx_SaveDwgToURLEx
保存DWG文件到服务器上的扩展函数static CString Mx_SaveDwgToURLEx(CString sServerUrl, CString sServerProgramUrl, CStringsComponentName, CString sPort, CString sFileTag);
pszServerUrl
服务器网址地址,如:www.mxdraw.com
pszServerProgramUrl
服务器的文件上传处理程序,如:upload.asp
pszComponentName
HTML组件名称,相当于一个HTML页面的Form中的中的file1
pszPort
服务处理端口. 如:_T("80")
pszFileTag
文件标志名称值,表单提交事件中filename值。是"Content-Disposition: form-data; name="file1"; filename="ymgcw.dwg"中的filename值。
[*]默认为空,程序自动取一个临时值。
返回失败的时,返回服务器错误信息
备注
例如: JS调用例程var param = MxDrawXCtrl_Obj.CallCustomFunction("Mx_NewResbuf", "");param.AddString(getcurpath(), -10); // 服务器网址地址,如:www.mxdraw.comparam.AddString("/Save.aspx", -10); // 服务器的文件上传处理程序,如:upload.aspparam.AddString("FileComponentName", -10); // HTML组件名称param.AddString("80", -10); // 服务处理端口. 如:_T("80")param.AddString("test.dwg", -10); // 文件标志名称值,表单提交事件中filename值 var ret = MxDrawXCtrl_Obj.CallCustomFunctionEx("Mx_SaveDwgToURLEx", param); if (ret.AtString(0) == "Ok") { alert("成功");} else { alert(ret.AtString(1)); }
设置上传文件目录的权限:
控件中的ASP例程,上传保存的文件放在updata文件下,在服务器上,必须设置其写权限,才能保存成功。
设置步骤如下:
A. 打我的“电脑窗口”,点取“工具”->“文件夹选项”,出来文件夹选项窗口,如下图:
http://www.mxdraw.com/uploadfile/2013/0614/20130614040910753.jpg
B. 在updata上点击右键,在右键的弹出菜单上,点击“属性”命令,如图:
http://www.mxdraw.com/uploadfile/2013/0614/20130614041753125.jpegC.在文件夹属性窗口中,点到“安全”页,在安全页中加入Everyone的操作权限,把写入权限加上 http://www.mxdraw.com/uploadfile/2013/0614/20130614041811267.jpeg
页:
[1]