首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mac Finder中使用milton webdav的@PutChild上传文件失败

在Mac Finder中使用milton webdav的@PutChild上传文件失败
EN

Stack Overflow用户
提问于 2017-11-28 02:01:33
回答 1查看 271关注 0票数 0

我正在使用米尔顿,我的上传代码如下:

代码语言:javascript
复制
@PutChild 
@Transactional 
public FileContentItem uploadFile(FolderContentItem parent, String name, byte[] bytes){
 String traceId = UuidGenUtil.createUuid();
 try { 
     QUERY_LOGGER.info("[uploadFile][NetdiskController],action=Request, name={}, size={},traceId={}",name,bytes.length,traceId);

在windows中,我可以成功上传文件,但使用Mac,字节长度总是为0,错误如下:

代码语言:javascript
复制
The Finder can't complete the operation because some data in "Shot.png" can't be read or written (Error code -36)

有人知道为什么吗?谢谢

更新:我尝试了mac中的ForkLift webdav客户端,并且可以成功地上传文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-28 12:37:25

问题是mac finder发送第一个请求来创建没有任何字节的新文件。

在它-调用锁,这是不可用的Dav级别1,这就是为什么你有坏的响应从服务器和mac停止上传一个文件。此方法仅适用于Dav级别2,因此您必须获得milton的企业许可证才能使其工作。

锁定对象之后,Finder会上传文件

事后解锁方法

因此,如果您想在弥尔顿的webdav中使用mac,您有几种选择:

  1. 获取试用企业许可证并查看下面的示例:https://github.com/miltonio/milton2/tree/master/examples/milton-anno-ref
  2. 通过webdav规范自己实现这些方法
  3. 模拟它-从MiltonFilter扩展或查看示例中的MyOwnServlet,并在方法doFilter/service中编写如下所示: //mock方法,不要在生产中使用它!HttpServletRequest请求= (HttpServletRequest)req;HttpServletResponse response = (HttpServletResponse) resp;if(request.getMethod().equals("LOCK")){ response.setStatus(200);response.addHeader(“锁-令牌”),如果(request.getMethod().equals(“锁定”)){ response.setStatus(204);}HttpServletRequest{ doMiltonProcessing((HttpServletRequest) req,(HttpServletResponse) resp)};

我已经检查了以下代码:在web.xml方法中使用MyOwnServlet服务,通过实现空的安全管理器在init中禁用身份验证,设置控制器包以扫描"com.mycompany“

附注:要构建示例项目,我必须从pom.xml文件中删除milton客户端依赖项

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47522762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档