Mac Finder中使用Milton WebDav的@putchild上传文件失败



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

@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 Finder,字节的长度始终为0,错误如下:

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客户端,并可以成功上传文件

问题是Mac Finder发送了创建新文件的首次请求,而无需任何字节

之后 - 呼叫锁(DAV 1级别不可用,这就是为什么服务器和MAC响应不良的原因,请停止上传文件。此方法仅适用于DAV 2级,因此您必须获得Milton的企业许可才能使其正常工作

锁定对象查找器上传文件

之后 - 调用解锁方法

因此,如果您想在米尔顿使用Mac Finder作为WebDav,则有几个选择:

  1. 获取试用企业许可证并查看此示例:https://github.com/miltonio/milton2/tree/master/master/examples/milton-anno-anno-ref

  2. WebDav Specs

  3. 自己实现这些方法
  4. 模拟它 - 从Miltonfilter延伸或在示例中查看Myownservlet和Metherservlet和Method dofilter/Service写下类似的内容:

    //mock method, do not use it in production!
    HttpServletRequest request = (HttpServletRequest)req;
    HttpServletResponse response = (HttpServletResponse) resp;
    if(request.getMethod().equals("LOCK")){
        response.setStatus(200);
        response.addHeader("Lock-Token", "<opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4>");
    } else if(request.getMethod().equals("UNLOCK")){
        response.setStatus(204);
    }else {
        doMiltonProcessing((HttpServletRequest) req, (HttpServletResponse) resp);
    }
    

我已经检查了以上链接中在考试中使用的此代码:myownservlet服务的web.xml方法,通过实现空安全管理器,将控制器软件包设置为扫描" com.mycompany"

P.S。为了构建示例项目,我将米尔顿客户端依赖性从pom.xml文件

删除

相关内容

  • 没有找到相关文章

最新更新