我有一个文件,它在WebDAV服务器上。我想使用C上的neon WebDAV客户端库编辑这个文件,我想要的是-在默认应用程序中打开这个文件的MIME类型,在我完成编辑之后,它应该保存在webdav服务器上的所有更改。我的操作系统是Windows 7。
我有些问题要问。
如果有人有简单的例子,请和我分享。
更新
再次感谢您,并为这个“回答”问题表示歉意。我尝试使用以下代码:
do {
fd = open("c:\\temp\\testdoc.docx", O_CREAT | O_RDWR, _S_IREAD | _S_IWRITE);
} while (fd == -1 && errno == EINTR);
if (fd == -1) {
const char *const errmsg = strerror(errno);
fprintf(stderr, "%s: %s.\n", "c:\\temp\\testdoc.docx", errmsg);
exit(1);
}
res =ne_get(sess, "/webdav/test/testdoc.docx", fd);
_close(fd);但是当我试图用MS Word打开它时,我仍然收到“我们很抱歉。我们不能打开testdoc.docx,因为我们发现它的内容有问题”。我直接从我的服务器下载这个文件,没有使用neon,这个文件的大小与使用ne_get命令下载的文件相同,并且MS完美地打开了它。
此外,我还尝试使用MS创建testdoc.docx,并使用以下代码将其放入服务器:
do {
fd = open("c:\\temp\\testdoc.docx", O_CREAT | O_RDWR, _S_IREAD | _S_IWRITE);
} while (fd == -1 && errno == EINTR);
if (fd == -1) {
const char *const errmsg = strerror(errno);
fprintf(stderr, "%s: %s.\n", "c:\\temp\\testdoc.docx", errmsg);
exit(1);
}
res =ne_put(sess, "/webdav/test/testdoc.docx", fd);
_close(fd);但是res是1,错误是:“请求体文件中的早熟EOF”。
发布于 2014-11-10 15:09:26
我应该先下载这个文件到临时目录吗?
是。您需要将该文件存储在物理本地文件中。否则,您无法在本地应用程序中打开它。
有什么霓虹灯的命令来做吗?
要下载,请使用ne_get (来自neon )。
使用GetTempPath WinAPI函数查找当前用户的临时目录所在的位置。
我怎么知道文件是否被更改了?
请参阅FindFirstChangeNotification WinAPI函数。
或者,在循环中检查临时文件的最后修改时间戳,等待更改。
是否有任何方法检查“保存”按钮是否已被单击?
不是的。您所能做的就是检查文件是否已更改。
当我在文件中做一些更改时,我应该使用什么命令将这些更改提交到WebDAV服务器?
使用ne_put。
顺便说一句,这是一个最终目标还是一个更大的应用程序的一部分?
如果这是一个最终的目标,有一些工具可以做到这一点。例如,您可以在关联的应用程序中将WinSCP (WebDAV client等)配置为双击打开远程文件。,并让它在保存时上传文件。换句话说,WinSCP实现了我前面描述的解决方案。(我是WinSCP的作者)
https://stackoverflow.com/questions/26845637
复制相似问题