以梦为马,不负韶华

搜索
查看: 3586|回复: 0
收起左侧

CAD控件:把在网页编辑的DWG文件保存到服务器上

[复制链接]
发表于 2015-6-30 16:26:54 显示全部楼层 |阅读模式
把在网页编辑的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值。         
  • 默认为空,程序自动取一个临时值。

返回

失败的时,返回服务器错误信息




[url=]备注[/url]

例如: 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. 打我的“电脑窗口”,点取“工具”->“文件夹选项”,出来文件夹选项窗口,如下图:



                               
登录/注册后可看大图

B. 在updata上点击右键,在右键的弹出菜单上,点击“属性”命令,如图:


                               
登录/注册后可看大图
C.在文件夹属性窗口中,点到“安全”页,在安全页中加入Everyone的操作权限,把写入权限加上

                               
登录/注册后可看大图



不想打字就选择快捷回复吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|以梦为马,不负韶华

GMT+8, 2025-4-14 00:38

Powered by 以梦为马,不负韶华

© 2024-2099 Meng.Horse

快速回复 返回顶部 返回列表