incubator-sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Sling > Chunked File Upload Support
Date Thu, 28 Feb 2013 14:48:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/1/_/styles/combined.css?spaceKey=SLING&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/SLING/Chunked+File+Upload+Support">Chunked
File Upload Support</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~shgupta">Shashank
Gupta</a>
    </h4>
        <br/>
                         <h4>Changes (31)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >The location header provides location
of fully uploaded asset.The response contains the $md5_hash of merged binary.  <br>
<br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">h3.
Upload chunk using PATCH <br>Sling support three patch formats to upload chunks on sling.
All other semantics remain same as  [Upload chunk using POST|https://cwiki.apache.org/confluence/display/SLING/Chunked+File+Upload+Support#ChunkedFileUploadSupport-UploadchunkusingPOST]
<br># append/binary-patch: Use this content type if request contain only binary chunk
data. If request has additional parameters that need to be passed, then use application/json-patch
or multipart/form-data-patch content type.  <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">h3.
Query Sling about the interrupted chunk upload status <br>Client sent get request on
upload to retrieve chunk upload status <br></td></tr>
            <tr><td class="diff-unchanged" >\[request\] <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">{code:title=
Upload the first/intermediate chunk request} <br>PATCH /content/dam/dam-folder/catalog.pdf.chunk.&lt;chunk_number&gt;.res
HTTP/1.1 <br>Content-Type: application/octet-stream-patch <br>If-Match: &quot;e0023aa4e&quot;
<br>Content-Length: $requestlen <br>$binarydata <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">{code:title=
Query interrupted chunk upload request} <br>GET /tmp/sling/chunks/21d36856b76045da8719ac932f88fe08.json
HTTP/1.1 <br>Authorization: Basic YWRtaW46YWRtaW4= <br>Connection: Keep-Alive
<br>User-Agent: Apache-HttpClient/4.1 (java 1.5) <br>Host: localhost:4502 <br></td></tr>
            <tr><td class="diff-unchanged" >{code} <br>\[response\] <br></td></tr>
            <tr><td class="diff-changed-lines" >{code:title= <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">First/Intermediate</span>
<span class="diff-added-words"style="background-color: #dfd;">Query interrupted</span>
chunk upload response} <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">HTTP/1.1
201 CREATED <br>Location: /content/dam/dam-folder/catalog.pdf.chunk <br>ETag:
&quot;e0023aa4f&quot; <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">HTTP/1.1
200 OK <br></td></tr>
            <tr><td class="diff-changed-lines" >Connection: <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">close</span>
<span class="diff-added-words"style="background-color: #dfd;">Keep-Alive</span>
<br></td></tr>
            <tr><td class="diff-changed-lines" >Server: <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">localhost:4502</span>
<span class="diff-added-words"style="background-color: #dfd;">Day-Servlet-Engine/4.1.42</span>
<br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">{code}
<br># application/json-patch: JSON format patch document to pass upload attributes along
with binary chunk   <br>\[request\] <br>{code:title= Upload the first/intermediate
chunk request} <br>PATCH /content/dam/dam-folder/catalog.pdf.chunk.&lt;chunk_number&gt;.res
HTTP/1.1 <br></td></tr>
            <tr><td class="diff-changed-lines" >Content-Type: <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">application/json-patch</span>
<span class="diff-added-words"style="background-color: #dfd;">application/json;charset=UTF-8</span>
<br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">If-Match:
&quot;e0023aa4e&quot; <br></td></tr>
            <tr><td class="diff-changed-lines" >Content-Length: <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">$requestlen</span>
<span class="diff-added-words"style="background-color: #dfd;">155</span> <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">[
<br>  { <br>	&quot;jcr:data&quot;: &quot;$binarydata&quot;, <br>
&quot;fileName&quot;: &quot;catalog.pdf&quot;, <br>	&quot; field1&quot;:
&quot;$field1&quot; <br>  } <br>] <br>{code} <br>\[response\]
<br>{code:title= First/Intermediate chunk upload response} <br>HTTP/1.1 201 CREATED
<br>Location: /content/dam/dam-folder/catalog.pdf.chunk <br>ETag: &quot;e0023aa4f&quot;
<br>Connection: close <br>Server: localhost:4502 <br>{code} <br>#
multipart/form-data-patch: multipart/form-data-patch format to pass upload attributes along
with binary chunk   <br>\[request\] <br>{code:title= Upload the first/intermediate
chunk request} <br>PATCH /content/dam/dam-folder/catalog.pdf.chunk.&lt;chunk_number&gt;.res
HTTP/1.1 <br>Content-Type: multipart/form-data-patch <br>If-Match: &quot;e0023aa4e&quot;
<br>Content-Length: $requestlen <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">Date:
Thu, 28 Feb 2013 14:14:25 GMT <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">--AaB03x
<br>content-disposition: form-data; name=&quot;field1&quot; <br> <br>$field1
<br>--AaB03x <br>content-disposition: form-data; name=&quot;field2&quot;
<br> <br>$field2 <br>--AaB03x <br>content-disposition: form-data;
name=&quot;userfile&quot;; filename=&quot;$filename&quot; <br>Content-Type:
$mimetype <br>Content-Transfer-Encoding: binary <br> <br>$binarydata <br>--AaB03x--
<br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">{&quot;chunksUploaded&quot;:5,&quot;bytesUploaded&quot;:1600,&quot;jcr:createdBy&quot;:&quot;admin&quot;,&quot;jcr:created&quot;:&quot;Thu
Feb 28 2013 19:44:24 GMT+0530&quot;,&quot;jcr:primaryType&quot;:&quot;sling:OrderedFolder&quot;}
<br></td></tr>
            <tr><td class="diff-unchanged" >{code} <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">\[response\]
<br>{code:title= First/Intermediate chunk upload response} <br>HTTP/1.1 201 CREATED
<br>Location: /content/dam/dam-folder/catalog.pdf.chunk <br>ETag: &quot;e0023aa4f&quot;
<br>Connection: close <br>Server: localhost:4502 <br>{code} <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">h3.
Query to retrieve last successful chunk upload <br>Returns the number of last chunk
upload and bytes uploaded successfully on sling.  <br>\[request\] <br>{code:title=
Get last successful chunk upload request} <br>GET /content/dam/dam-folder/catalog.pdf.chunk.json
HTTP/1.1 <br>Host: localhost:4502 <br>Date: &lt;date&gt; <br>Content-Length:
0 <br>{code} <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">If
no broken/discontinued upload sling returns 404 not found response.  <br></td></tr>
            <tr><td class="diff-unchanged" >\[response\] <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">{code:title=
Get last successful upload chunk response} <br>HTTP/1.1 200/OK <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">{code:title=
Chunk upload not found response} <br>HTTP/1.1 404 Not Found <br></td></tr>
            <tr><td class="diff-changed-lines" >Connection: <span class="diff-changed-words"><span
class="diff-deleted-chars"style="color:#999;background-color:#fdd;text-decoration:line-through;">c</span><span
class="diff-added-chars"style="background-color: #dfd;">C</span>lose</span>
<br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">Server:
Day-Servlet-Engine/4.1.42 <br>Content-Type: text/html;charset=utf-8 <br>Date:
Thu, 28 Feb 2013 14:14:25 GMT <br>Transfer-Encoding: chunked <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">&lt;!DOCTYPE
HTML PUBLIC &quot;-//IETF//DTD HTML 2.0//EN&quot;&gt; <br></td></tr>
            <tr><td class="diff-changed-lines" ><span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">{</span>
<span class="diff-added-words"style="background-color: #dfd;">&lt;html&gt;</span>
<br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">
   &quot;chunkNumber&quot;: 8 <br>    &quot;bytesuploaded&quot;: 19872
<br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">
   &lt;head&gt;&lt;title&gt;404 No resource found&lt;/title&gt;&lt;/head&gt;
<br></td></tr>
            <tr><td class="diff-changed-lines" ><span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">}</span>
<span class="diff-added-words"style="background-color: #dfd;">&lt;body&gt;</span>
<br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">
       &lt;h1&gt;No resource found&lt;/h1&gt; <br>        &lt;p&gt;Cannot
serve request to /tmp/sling/chunks/21d36856b76045da8719ac932f88fe08 in /libs/sling/servlet/errorhandler/404.jsp&lt;/p&gt;
<br> <br>        &lt;h3&gt;Request Progress:&lt;/h3&gt; <br>&lt;pre&gt;
<br>      0 (2013-02-28 19:44:25) TIMER_START{Request Processing} <br>      0
(2013-02-28 19:44:25) COMMENT timer_end format is {&amp;lt;elapsed msec&amp;gt;,&amp;lt;timer
name&amp;gt;} &amp;lt;optional message&amp;gt; <br>      0 (2013-02-28 19:44:25)
LOG Method=GET, PathInfo=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08 <br>   
  0 (2013-02-28 19:44:25) TIMER_START{ResourceResolution} <br>      0 (2013-02-28 19:44:25)
TIMER_END{0,ResourceResolution} URI=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08 resolves
to Resource=, type=sling:nonexisting, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08,
resource=[NonExistingResource, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08] <br>
     0 (2013-02-28 19:44:25) LOG Resource Path Info: SlingRequestPathInfo: path=&#39;/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08&#39;,
selectorString=&#39;null&#39;, extension=&#39;null&#39;, suffix=&#39;null&#39;
<br>      0 (2013-02-28 19:44:25) TIMER_START{ServletResolution} <br>      0 (2013-02-28
19:44:25) TIMER_START{resolveServlet(, type=sling:nonexisting, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08,
resource=[NonExistingResource, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08])}
<br>      0 (2013-02-28 19:44:25) LOG {0}: no servlet found <br>      0 (2013-02-28
19:44:25) TIMER_END{0,resolveServlet(, type=sling:nonexisting, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08,
resource=[NonExistingResource, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08])}
Using servlet org.apache.sling.servlets.get.DefaultGetServlet <br>      0 (2013-02-28
19:44:25) TIMER_END{0,ServletResolution} URI=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08
handled by Servlet=org.apache.sling.servlets.get.DefaultGetServlet <br>      0 (2013-02-28
19:44:25) LOG Applying Requestfilters <br>      0 (2013-02-28 19:44:25) LOG Calling
filter: org.apache.sling.bgservlets.impl.BackgroundServletStarterFilter <br>      0
(2013-02-28 19:44:25) LOG Calling filter: org.apache.sling.i18n.impl.I18NFilter <br>
     0 (2013-02-28 19:44:25) LOG Calling filter: org.apache.sling.rewriter.impl.RewriterFilter
<br>      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.designimporter.CanvasPageDeleteRequestFilter
<br>      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.core.impl.WCMRequestFilter
<br>      0 (2013-02-28 19:44:25) LOG Calling filter: com.adobe.granite.optout.impl.OptOutFilter
<br>      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.theme.impl.ThemeResolverFilter
<br>      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet
<br>      0 (2013-02-28 19:44:25) LOG Calling filter: org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter
<br>      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter
<br>      0 (2013-02-28 19:44:25) LOG RedirectFilter did not redirect (request extension
does not match) <br>      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.core.impl.warp.TimeWarpFilter
<br>      0 (2013-02-28 19:44:25) LOG Applying Componentfilters <br>      0 (2013-02-28
19:44:25) LOG Calling filter: com.day.cq.wcm.core.impl.WCMComponentFilter <br>     
0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.core.impl.WCMDebugFilter <br>
     0 (2013-02-28 19:44:25) TIMER_START{org.apache.sling.servlets.get.DefaultGetServlet#0}
<br>      0 (2013-02-28 19:44:25) TIMER_END{0,org.apache.sling.servlets.get.DefaultGetServlet#0}
<br>      0 (2013-02-28 19:44:25) LOG Applying Error filters <br>      0 (2013-02-28
19:44:25) LOG Calling filter: org.apache.sling.rewriter.impl.RewriterFilter <br>   
  0 (2013-02-28 19:44:25) TIMER_START{handleError:status=404} <br>      0 (2013-02-28
19:44:25) TIMER_END{0,handleError:status=404} Using handler /libs/sling/servlet/errorhandler/404.jsp
<br>      0 (2013-02-28 19:44:25) LOG Found processor for post processing ProcessorConfiguration:
{contentTypes=[text/html],order=-1, active=true, valid=true, processErrorResponse=true, pipeline=(generator=Config(type=htmlparser,
config={}), transformers=(Config(type=linkchecker, config={}), Config(type=mobile, config=org.apache.sling.jcr.resource.JcrPropertyMap@42e95cbf),
Config(type=mobiledebug, config=org.apache.sling.jcr.resource.JcrPropertyMap@66c821ea), Config(type=contentsync,
config=org.apache.sling.jcr.resource.JcrPropertyMap@5d2abe5d), serializer=Config(type=htmlwriter,
config={}))} <br>      0 (2013-02-28 19:44:25) TIMER_END{0,Request Processing} Dumping
SlingRequestProgressTracker Entries <br>&lt;/pre&gt; <br> <br> <br>
       &lt;hr&gt; <br>        &lt;address&gt;ApacheSling/2.2 (Day-Servlet-Engine/4.1.42,
Java HotSpot(TM) 64-Bit Server VM 1.6.0_26, Windows 7 6.1 amd64)&lt;/address&gt; <br>
   &lt;/body&gt; <br>&lt;/html&gt; <br></td></tr>
            <tr><td class="diff-unchanged" >{code} <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">If
no broken/discontinued upload sling returns 404 not found response.  <br>\[response\]
<br>{code:title= Chunked upload not found response} <br>HTTP/1.1 404/Not Found
<br>{code} <br></td></tr>
            <tr><td class="diff-unchanged" > <br>h3. Abort chunked upload
<br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <div>
<ul>
    <li><span class='TOCOutline'>1</span> <a href='#ChunkedFileUploadSupport-ChunkedFileUpload'>Chunked
File Upload</a></li>
    <li><span class='TOCOutline'>2</span> <a href='#ChunkedFileUploadSupport-UseCases%3A'>Use
Cases:</a></li>
    <li><span class='TOCOutline'>3</span> <a href='#ChunkedFileUploadSupport-Approach'>Approach</a></li>
    <li><span class='TOCOutline'>4</span> <a href='#ChunkedFileUploadSupport-ProtocolSpecification'>Protocol
Specification</a></li>
<ul>
    <li><span class='TOCOutline'>4.1</span> <a href='#ChunkedFileUploadSupport-UploadchunkusingPOST'>Upload
chunk using POST</a></li>
    <li><span class='TOCOutline'>4.2</span> <a href='#ChunkedFileUploadSupport-QuerySlingabouttheinterruptedchunkuploadstatus'>Query
Sling about the interrupted chunk upload status</a></li>
    <li><span class='TOCOutline'>4.3</span> <a href='#ChunkedFileUploadSupport-Abortchunkedupload'>Abort
chunked upload</a></li>
</ul>
</ul></div>

<h1><a name="ChunkedFileUploadSupport-ChunkedFileUpload"></a>Chunked File
Upload</h1>

<p>Status: DRAFT<br/>
Created: 20. January 2013<br/>
Author: shgupta<br/>
JIRA: <a href="https://issues.apache.org/jira/browse/SLING-2707" class="external-link"
rel="nofollow">SLING-2707</a><br/>
References: - <a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html"
class="external-link" rel="nofollow">http://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html</a><br/>
Updated: -</p>

<h1><a name="ChunkedFileUploadSupport-UseCases%3A"></a>Use Cases:</h1>
<p>1. Large file upload - With high speed internet connections, advent of cloud and
HD going mainstream, Sling support large files (&gt; 2GB) upload.<br/>
2. Fault tolerant uploads - Sling provides capability to resume upload from failure point.
It doesn't require client to restart the complete upload process. </p>

<h1><a name="ChunkedFileUploadSupport-Approach"></a>Approach</h1>
<p>Sling provides an extension to <a href="http://sling.apache.org/site/manipulating-content-the-slingpostservlet-servletspost.html"
class="external-link" rel="nofollow">SlingPostServlet</a> which accepts file chunks
in accordance with a specified protocol. Sling client slices the file in chunks, and upload
the chunks in serial manner to server. Each chunk is numbered serially and the last chunk
has additional identifier to distinguish from the rest chunks. <a href="http://sling.apache.org/site/manipulating-content-the-slingpostservlet-servletspost.html"
class="external-link" rel="nofollow">SlingPostServlet</a>upon receiving the last
chunk, stitches all chunks into a single file and creates node tree in repository. </p>

<p>In case of upload failures, sling provides support to query the last chunk uploaded
till failure point. Client resumes chunk upload from last failure point. </p>

<h1><a name="ChunkedFileUploadSupport-ProtocolSpecification"></a>Protocol
Specification </h1>


<h3><a name="ChunkedFileUploadSupport-UploadchunkusingPOST"></a>Upload chunk
using POST </h3>

<h4><a name="ChunkedFileUploadSupport-Firstchunkupload"></a>First chunk
upload</h4>
<p>Client uses POST method to parent path to upload binary chunk of file. Client passes
":chunkNumber" and "fileName" as multipart request parameters.<br/>
[request]</p>
<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>First chunk upload request</b></div><div
class="codeContent panelContent">
<pre class="code-java">
POST /content/dam HTTP/1.1
Authorization: Basic YWRtaW46YWRtaW4=
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=v0_zWJbImtVo0uK-bJWayWUiT3zTBIj6
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1 (java 1.5)
Host: localhost:4502

--v0_zWJbImtVo0uK-bJWayWUiT3zTBIj6
Content-Disposition: form-data; name=<span class="code-quote">":chunkNumber"</span>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

1
--v0_zWJbImtVo0uK-bJWayWUiT3zTBIj6
Content-Disposition: form-data; name=<span class="code-quote">"*"</span>; filename=<span
class="code-quote">"catalog.pdf"</span>
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

$binarydata
</pre>
</div></div>

<p>[response]</p>
<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>First chunk upload response</b></div><div
class="codeContent panelContent">
<pre class="code-java">
HTTP/1.1 200 OK
Connection: Keep-Alive
Server: Day-Servlet-Engine/4.1.42
Content-Type: text/html;charset=UTF-8
Date: Thu, 28 Feb 2013 14:14:24 GMT
Transfer-Encoding: chunked

&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Content modified /tmp/sling/chunks&lt;/title&gt;
&lt;/head&gt;
    &lt;body&gt;
    &lt;h1&gt;Content modified /tmp/sling/chunks&lt;/h1&gt;
    &lt;table&gt;
        &lt;tbody&gt;
            &lt;tr&gt;
                &lt;td&gt;Status&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"Status"</span>&gt;200&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Message&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"Message"</span>&gt;OK&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Location&lt;/td&gt;
                &lt;td&gt;&lt;a href=<span class="code-quote">"/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08"</span>
id=<span class="code-quote">"Location"</span>&gt;/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08&lt;/a&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Parent Location&lt;/td&gt;
                &lt;td&gt;&lt;a href=<span class="code-quote">"/tmp/sling/chunks"</span>
id=<span class="code-quote">"ParentLocation"</span>&gt;/tmp/sling/chunks&lt;/a&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Path&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"Path"</span>&gt;/tmp/sling/chunks&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Referer&lt;/td&gt;
                &lt;td&gt;&lt;a href=<span class="code-quote">"" id="</span>Referer"&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;ChangeLog&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"ChangeLog"</span>&gt;&amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
        &lt;/tbody&gt;
    &lt;/table&gt;
    &lt;p&gt;&lt;a href=""&gt;Go Back&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;&lt;a href=<span class="code-quote">"/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08"</span>&gt;Modified
Resource&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;&lt;a href=<span class="code-quote">"/tmp/sling/chunks"</span>&gt;Parent
of Modified Resource&lt;/a&gt;&lt;/p&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre>
</div></div>
<p><b>The location tag contains unique chunk upload id which need to be passed
on subsequent request.</b></p>

<h4><a name="ChunkedFileUploadSupport-Intermediatechunkupload"></a>Intermediate
chunk upload </h4>
<p>Client require to additionally  pass chunk upload id <br/>
[request]</p>
<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>Intermediate chunk upload request</b></div><div
class="codeContent panelContent">
<pre class="code-java">
POST /content/dam HTTP/1.1
Authorization: Basic YWRtaW46YWRtaW4=
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=F1MYdmO-MYq-wLW2P2tWIu-7KUH3-r
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1 (java 1.5)
Host: localhost:4502

--F1MYdmO-MYq-wLW2P2tWIu-7KUH3-r
Content-Disposition: form-data; name=<span class="code-quote">":chunkNumber"</span>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

3
--F1MYdmO-MYq-wLW2P2tWIu-7KUH3-r
Content-Disposition: form-data; name=<span class="code-quote">":chunkUploadId"</span>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08
--F1MYdmO-MYq-wLW2P2tWIu-7KUH3-r
Content-Disposition: form-data; name=<span class="code-quote">"*"</span>; filename=<span
class="code-quote">"catalog.pdf"</span>
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

$binarydata
</pre>
</div></div>

<p>[response]</p>
<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>Intermediate chunk upload response</b></div><div
class="codeContent panelContent">
<pre class="code-java">
HTTP/1.1 200 OK
Connection: Keep-Alive
Server: Day-Servlet-Engine/4.1.42
Content-Type: text/html;charset=UTF-8
Date: Thu, 28 Feb 2013 14:14:25 GMT
Transfer-Encoding: chunked

&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Content modified /tmp/sling/chunks&lt;/title&gt;
&lt;/head&gt;
    &lt;body&gt;
    &lt;h1&gt;Content modified /tmp/sling/chunks&lt;/h1&gt;
    &lt;table&gt;
        &lt;tbody&gt;
            &lt;tr&gt;
                &lt;td&gt;Status&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"Status"</span>&gt;200&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Message&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"Message"</span>&gt;OK&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Location&lt;/td&gt;
                &lt;td&gt;&lt;a href=<span class="code-quote">"/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08"</span>
id=<span class="code-quote">"Location"</span>&gt;/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08&lt;/a&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Parent Location&lt;/td&gt;
                &lt;td&gt;&lt;a href=<span class="code-quote">"/tmp/sling/chunks"</span>
id=<span class="code-quote">"ParentLocation"</span>&gt;/tmp/sling/chunks&lt;/a&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Path&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"Path"</span>&gt;/tmp/sling/chunks&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Referer&lt;/td&gt;
                &lt;td&gt;&lt;a href=<span class="code-quote">"" id="</span>Referer"&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;ChangeLog&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"ChangeLog"</span>&gt;&amp;lt;pre&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
        &lt;/tbody&gt;
    &lt;/table&gt;
    &lt;p&gt;&lt;a href=""&gt;Go Back&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;&lt;a href=<span class="code-quote">"/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08"</span>&gt;Modified
Resource&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;&lt;a href=<span class="code-quote">"/tmp/sling/chunks"</span>&gt;Parent
of Modified Resource&lt;/a&gt;&lt;/p&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre>
</div></div>


<h4><a name="ChunkedFileUploadSupport-Lastchunkupload"></a>Last chunk upload</h4>
<p>To indicate the last chunk, client additionally pass ":lastChunk" to true in request
parameter. In last chunk upload response, the changelog has all the modification made in the
repository. <br/>
[request]</p>
<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>Last chunk upload request</b></div><div
class="codeContent panelContent">
<pre class="code-java">
POST /content/dam HTTP/1.1
Authorization: Basic YWRtaW46YWRtaW4=
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=XHnea0Y5RY92mJwpnKXHfl0dfhcqOCe
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1 (java 1.5)
Host: localhost:4502

--XHnea0Y5RY92mJwpnKXHfl0dfhcqOCe
Content-Disposition: form-data; name=<span class="code-quote">":lastChunk"</span>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

<span class="code-keyword">true</span>
--XHnea0Y5RY92mJwpnKXHfl0dfhcqOCe
Content-Disposition: form-data; name=<span class="code-quote">":chunkNumber"</span>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

6
--XHnea0Y5RY92mJwpnKXHfl0dfhcqOCe
Content-Disposition: form-data; name=<span class="code-quote">":chunkUploadId"</span>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08
--XHnea0Y5RY92mJwpnKXHfl0dfhcqOCe
Content-Disposition: form-data; name=<span class="code-quote">"*"</span>; filename=<span
class="code-quote">"catalog.pdf"</span>
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary


$binarydata
</pre>
</div></div>
<p>[response]</p>
<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>Last chunk upload response</b></div><div
class="codeContent panelContent">
<pre class="code-java">
HTTP/1.1 200 OK
Connection: Keep-Alive
Server: Day-Servlet-Engine/4.1.42
Content-Type: text/html;charset=UTF-8
Date: Thu, 28 Feb 2013 14:14:25 GMT
Transfer-Encoding: chunked

&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Content modified /content/dam&lt;/title&gt;
&lt;/head&gt;
    &lt;body&gt;
    &lt;h1&gt;Content modified /content/dam&lt;/h1&gt;
    &lt;table&gt;
        &lt;tbody&gt;
            &lt;tr&gt;
                &lt;td&gt;Status&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"Status"</span>&gt;200&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Message&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"Message"</span>&gt;OK&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Location&lt;/td&gt;
                &lt;td&gt;&lt;a href=<span class="code-quote">"/content/dam"</span>
id=<span class="code-quote">"Location"</span>&gt;/content/dam&lt;/a&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Parent Location&lt;/td&gt;
                &lt;td&gt;&lt;a href=<span class="code-quote">"/content"</span>
id=<span class="code-quote">"ParentLocation"</span>&gt;/content&lt;/a&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Path&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"Path"</span>&gt;/content/dam&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;Referer&lt;/td&gt;
                &lt;td&gt;&lt;a href=<span class="code-quote">"" id="</span>Referer"&gt;&lt;/a&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;ChangeLog&lt;/td&gt;
                &lt;td&gt;&lt;div id=<span class="code-quote">"ChangeLog"</span>&gt;&amp;lt;pre&amp;gt;created(<span
class="code-quote">"/content/dam/catalog.pdf"</span>);&amp;lt;br/&amp;gt;created(<span
class="code-quote">"/content/dam/catalog.pdf/jcr:content"</span>);&amp;lt;br/&amp;gt;modified(<span
class="code-quote">"/content/dam/catalog.pdf/jcr:content/jcr:lastModified"</span>);&amp;lt;br/&amp;gt;modified(<span
class="code-quote">"/content/dam/catalog.pdf/jcr:content/jcr:mimeType"</span>);&amp;lt;br/&amp;gt;modified(<span
class="code-quote">"/content/dam/catalog.pdf/jcr:content/jcr:data"</span>);&amp;lt;br/&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
        &lt;/tbody&gt;
    &lt;/table&gt;
    &lt;p&gt;&lt;a href=""&gt;Go Back&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;&lt;a href=<span class="code-quote">"/content/dam"</span>&gt;Modified
Resource&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;&lt;a href=<span class="code-quote">"/content"</span>&gt;Parent
of Modified Resource&lt;/a&gt;&lt;/p&gt;
    &lt;/body&gt;
&lt;/html
</pre>
</div></div>
<p>The location header provides location of fully uploaded asset.The response contains
the $md5_hash of merged binary. </p>

<h3><a name="ChunkedFileUploadSupport-QuerySlingabouttheinterruptedchunkuploadstatus"></a>Query
Sling about the interrupted chunk upload status</h3>
<p>Client sent get request on upload to retrieve chunk upload status<br/>
[request]</p>
<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>Query interrupted chunk upload request</b></div><div
class="codeContent panelContent">
<pre class="code-java">
GET /tmp/sling/chunks/21d36856b76045da8719ac932f88fe08.json HTTP/1.1
Authorization: Basic YWRtaW46YWRtaW4=
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1 (java 1.5)
Host: localhost:4502
</pre>
</div></div>
<p>[response]</p>
<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>Query interrupted chunk upload response</b></div><div
class="codeContent panelContent">
<pre class="code-java">
HTTP/1.1 200 OK
Connection: Keep-Alive
Server: Day-Servlet-Engine/4.1.42
Content-Type: application/json;charset=UTF-8
Content-Length: 155
Date: Thu, 28 Feb 2013 14:14:25 GMT

{<span class="code-quote">"chunksUploaded"</span>:5,<span class="code-quote">"bytesUploaded"</span>:1600,<span
class="code-quote">"jcr:createdBy"</span>:<span class="code-quote">"admin"</span>,<span
class="code-quote">"jcr:created"</span>:<span class="code-quote">"Thu Feb 28
2013 19:44:24 GMT+0530"</span>,<span class="code-quote">"jcr:primaryType"</span>:<span
class="code-quote">"sling:OrderedFolder"</span>}
</pre>
</div></div>

<p>If no broken/discontinued upload sling returns 404 not found response. <br/>
[response]</p>
<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>Chunk upload not found response</b></div><div
class="codeContent panelContent">
<pre class="code-java">
HTTP/1.1 404 Not Found
Connection: Close
Server: Day-Servlet-Engine/4.1.42
Content-Type: text/html;charset=utf-8
Date: Thu, 28 Feb 2013 14:14:25 GMT
Transfer-Encoding: chunked

&lt;!DOCTYPE HTML PUBLIC <span class="code-quote">"-<span class="code-comment">//IETF//DTD
HTML 2.0//EN"</span>&gt;
</span>&lt;html&gt;
    &lt;head&gt;&lt;title&gt;404 No resource found&lt;/title&gt;&lt;/head&gt;
    &lt;body&gt;
        &lt;h1&gt;No resource found&lt;/h1&gt;
        &lt;p&gt;Cannot serve request to /tmp/sling/chunks/21d36856b76045da8719ac932f88fe08
in /libs/sling/servlet/errorhandler/404.jsp&lt;/p&gt;
        
        &lt;h3&gt;Request Progress:&lt;/h3&gt;
&lt;pre&gt;
      0 (2013-02-28 19:44:25) TIMER_START{Request Processing}
      0 (2013-02-28 19:44:25) COMMENT timer_end format is {&amp;lt;elapsed msec&amp;gt;,&amp;lt;timer
name&amp;gt;} &amp;lt;optional message&amp;gt;
      0 (2013-02-28 19:44:25) LOG Method=GET, PathInfo=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08
      0 (2013-02-28 19:44:25) TIMER_START{ResourceResolution}
      0 (2013-02-28 19:44:25) TIMER_END{0,ResourceResolution} URI=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08
resolves to Resource=, type=sling:nonexisting, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08,
resource=[NonExistingResource, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08]
      0 (2013-02-28 19:44:25) LOG Resource Path Info: SlingRequestPathInfo: path='/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08',
selectorString='<span class="code-keyword">null</span>', extension='<span class="code-keyword">null</span>',
suffix='<span class="code-keyword">null</span>'
      0 (2013-02-28 19:44:25) TIMER_START{ServletResolution}
      0 (2013-02-28 19:44:25) TIMER_START{resolveServlet(, type=sling:nonexisting, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08,
resource=[NonExistingResource, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08])}
      0 (2013-02-28 19:44:25) LOG {0}: no servlet found
      0 (2013-02-28 19:44:25) TIMER_END{0,resolveServlet(, type=sling:nonexisting, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08,
resource=[NonExistingResource, path=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08])}
Using servlet org.apache.sling.servlets.get.DefaultGetServlet
      0 (2013-02-28 19:44:25) TIMER_END{0,ServletResolution} URI=/tmp/sling/chunks/21d36856b76045da8719ac932f88fe08
handled by Servlet=org.apache.sling.servlets.get.DefaultGetServlet
      0 (2013-02-28 19:44:25) LOG Applying Requestfilters
      0 (2013-02-28 19:44:25) LOG Calling filter: org.apache.sling.bgservlets.impl.BackgroundServletStarterFilter
      0 (2013-02-28 19:44:25) LOG Calling filter: org.apache.sling.i18n.impl.I18NFilter
      0 (2013-02-28 19:44:25) LOG Calling filter: org.apache.sling.rewriter.impl.RewriterFilter
      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.designimporter.CanvasPageDeleteRequestFilter
      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.core.impl.WCMRequestFilter
      0 (2013-02-28 19:44:25) LOG Calling filter: com.adobe.granite.optout.impl.OptOutFilter
      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.theme.impl.ThemeResolverFilter
      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet
      0 (2013-02-28 19:44:25) LOG Calling filter: org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter
      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter
      0 (2013-02-28 19:44:25) LOG RedirectFilter did not redirect (request extension does
not match)
      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.core.impl.warp.TimeWarpFilter
      0 (2013-02-28 19:44:25) LOG Applying Componentfilters
      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.core.impl.WCMComponentFilter
      0 (2013-02-28 19:44:25) LOG Calling filter: com.day.cq.wcm.core.impl.WCMDebugFilter
      0 (2013-02-28 19:44:25) TIMER_START{org.apache.sling.servlets.get.DefaultGetServlet#0}
      0 (2013-02-28 19:44:25) TIMER_END{0,org.apache.sling.servlets.get.DefaultGetServlet#0}
      0 (2013-02-28 19:44:25) LOG Applying Error filters
      0 (2013-02-28 19:44:25) LOG Calling filter: org.apache.sling.rewriter.impl.RewriterFilter
      0 (2013-02-28 19:44:25) TIMER_START{handleError:status=404}
      0 (2013-02-28 19:44:25) TIMER_END{0,handleError:status=404} Using handler /libs/sling/servlet/errorhandler/404.jsp
      0 (2013-02-28 19:44:25) LOG Found processor <span class="code-keyword">for</span>
post processing ProcessorConfiguration: {contentTypes=[text/html],order=-1, active=<span
class="code-keyword">true</span>, valid=<span class="code-keyword">true</span>,
processErrorResponse=<span class="code-keyword">true</span>, pipeline=(generator=Config(type=htmlparser,
config={}), transformers=(Config(type=linkchecker, config={}), Config(type=mobile, config=org.apache.sling.jcr.resource.JcrPropertyMap@42e95cbf),
Config(type=mobiledebug, config=org.apache.sling.jcr.resource.JcrPropertyMap@66c821ea), Config(type=contentsync,
config=org.apache.sling.jcr.resource.JcrPropertyMap@5d2abe5d), serializer=Config(type=htmlwriter,
config={}))}
      0 (2013-02-28 19:44:25) TIMER_END{0,Request Processing} Dumping SlingRequestProgressTracker
Entries
&lt;/pre&gt;

        
        &lt;hr&gt;
        &lt;address&gt;ApacheSling/2.2 (Day-Servlet-Engine/4.1.42, Java HotSpot(TM)
64-Bit Server VM 1.6.0_26, Windows 7 6.1 amd64)&lt;/address&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre>
</div></div>

<h3><a name="ChunkedFileUploadSupport-Abortchunkedupload"></a>Abort chunked
upload</h3>
<p>[request]</p>
<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>Abort chunked upload Request</b></div><div
class="codeContent panelContent">
<pre class="code-java">
DELETE /content/dam/dam-folder/catalog.pdf.chunk.res HTTP/1.1
Host: localhost:4502
Date: &lt;date&gt;
</pre>
</div></div>
<p>[response]</p>
<div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader"
style="border-bottom-width: 1px;"><b>Abort chunked upload response</b></div><div
class="codeContent panelContent">
<pre class="code-java">
HTTP/1.1 200/OK
Connection: close
</pre>
</div></div>


    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;">
            <a href="https://cwiki.apache.org/confluence/users/viewnotifications.action"
class="grey">Change Notification Preferences</a>
        </div>
        <a href="https://cwiki.apache.org/confluence/display/SLING/Chunked+File+Upload+Support">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=30749779&revisedVersion=27&originalVersion=26">View
Changes</a>
                |
        <a href="https://cwiki.apache.org/confluence/display/SLING/Chunked+File+Upload+Support?showComments=true&amp;showCommentArea=true#addcomment">Add
Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message