2017-11-28 5 views
0

ich milton bin mit, und mein Upload-Code wie folgt:@PutChild Datei hochladen mit milton webdav in Mac Finder fehlgeschlagen

@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); 

In Fenstern, i-Datei erfolgreich hochladen, aber mit Mac Finder, die Länge von Bytes ist immer 0, und der Fehler wie folgt:

Wer weiß warum? Dank

Update: Ich versuche ForkLift WebDAV-Client in Mac und Datei hochladen erfolgreich

Antwort

0

Das Problem ist, dass Mac-Finder ohne Byte für die Erstellung neuer Datei erste Anforderung sendet

Nachdem er - nennen LOCK, die ist nicht für Dav Level 1 verfügbar, deshalb haben Sie eine schlechte Antwort vom Server und mac hört auf, eine Datei hochzuladen. Diese Methode availiable nur für Dav Ebene 2, so dass Sie Enterprise-Lizenz von milton haben zu bekommen, um es

funktioniert

Nach Objekt Finder Sperren lädt die Datei

Nach - Anrufe Methode Unlock

SO, wenn Sie wollen

  1. Holen Sie sich das Probe Enterprise-Lizenz und schauen Sie in diesem Beispiel: mac-Finder für webdav in milton Sie haben mehrere Möglichkeiten zu nutzen https://github.com/miltonio/milton2/tree/master/examples/milton-anno-ref

  2. selbst diese Methoden Realisieren von webdav specs

  3. es Mock - von MiltonFilter erweitern oder in MyOwnServlet in Beispiel aussehen und in Verfahren doFilter/Service etwas schreiben wie folgt aus:

    //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); 
    } 
    

I habe diesen Code überprüft, der im Exembly by Link oben funktioniert: make in web.xml Methode Serving von MyOwnServlet, deaktiviere die Authentifizierung in init durch die Implementierung leerer Security Manager, setze Controller-Pakete zum Scannen von "com.mycompany"

p.s. um das Beispielprojekt zu erstellen, muss ich Milton Client-Abhängigkeit von pom.xml Datei

+0

löschen Danke, aber es scheint, dass einige Adresse (wie Register Test Enterprise-Lizenz) in Milton Website nicht verfügbar sind. Option 3 sollte funktionieren, aber ich kann in meiner Anwendung keinen leeren Sicherheitsmanager verwenden. Also vielleicht sollte ich andere Webdav-Client außer Finder verwenden – chou

+0

Sie können Sicherheitsmanager implementieren, gibt es keinen Einfluss, um diese Sache funktionieren zu lassen. Es ist nur dafür ohne Passwort zum Testen. Option 1 ist verfügbar, Sie sollten sich mit ihnen in Verbindung setzen und beschreiben, wofür Sie diese benötigen –

Verwandte Themen