Commit 0cbec772 authored by Guillaume Perréal's avatar Guillaume Perréal
Browse files

Utilise des sous-routes spécifiques pour accéder au contenu d'un fichier.

Showing with 25 additions and 19 deletions
+25 -19
...@@ -75,30 +75,34 @@ class UploadController extends Controller ...@@ -75,30 +75,34 @@ class UploadController extends Controller
$token = $this->csrfProvider->generateCsrfToken(self::CSRF_INTENTION); $token = $this->csrfProvider->generateCsrfToken(self::CSRF_INTENTION);
$location = $this->router->generate( $parameters = [
'file_upload_put', 'id' => $file->getId(),
[ 'token' => $token
'id' => $file->getId(), ];
'token' => $token
], $delete_url = $this->router->generate('file_upload_delete', $parameters);
RouterInterface::ABSOLUTE_URL
);
return $this->createResponse( return $this->createResponse(
Response::HTTP_CREATED, Response::HTTP_CREATED,
'New file created', 'New file created',
[ 'id' => $file->getId(), 'url' => $location ], [
[ 'Location' => $location ] 'id' => $file->getId(),
'put_url' => $this->router->generate('file_upload_put_content', $parameters),
'delete_type' => 'DELETE',
'delete_url' => $delete_url
],
// On a pas de get pour l'instant, le DELETE et ce qui y ressemble le plus
[ 'Location' => $delete_url ]
); );
} }
/** /**
* @Route("/{id}", name="file_upload_put") * @Route("/{id}/content", name="file_upload_put_content")
* @Method("PUT") * @Method("PUT")
* @param Request $request * @param Request $request
* @param UploadedFile $file * @param UploadedFile $file
*/ */
public function putAction(Request $request, UploadedFile $file) public function putContentAction(Request $request, UploadedFile $file)
{ {
$this->validateToken($request); $this->validateToken($request);
...@@ -150,7 +154,7 @@ class UploadController extends Controller ...@@ -150,7 +154,7 @@ class UploadController extends Controller
'name' => $file->getOriginalFilename(), 'name' => $file->getOriginalFilename(),
'type' => $file->getMimeType(), 'type' => $file->getMimeType(),
'size' => $file->getSize(), 'size' => $file->getSize(),
'url' => $this->router->generate('file_upload_get', $parameters), 'url' => $this->router->generate('file_upload_get_content', $parameters),
'delete_type' => 'DELETE', 'delete_type' => 'DELETE',
'delete_url' => $this->router->generate('file_upload_delete', $parameters), 'delete_url' => $this->router->generate('file_upload_delete', $parameters),
] ]
...@@ -160,12 +164,12 @@ class UploadController extends Controller ...@@ -160,12 +164,12 @@ class UploadController extends Controller
} }
/** /**
* @Route("/{id}", name="file_upload_get") * @Route("/{id}/content", name="file_upload_get_content")
* @Method("GET") * @Method("GET")
* @param Request $request * @param Request $request
* @param UploadedFile $file * @param UploadedFile $file
*/ */
public function getAction(Request $request, UploadedFile $file) public function getContentAction(Request $request, UploadedFile $file)
{ {
$this->validateToken($request); $this->validateToken($request);
......
...@@ -106,7 +106,9 @@ ...@@ -106,7 +106,9 @@
{ file: { name: file.name, size: file.size, type: file.type, lastModified: file.lastModified } }, { file: { name: file.name, size: file.size, type: file.type, lastModified: file.lastModified } },
function(response) { function(response) {
if(response.status == 201) { if(response.status == 201) {
data.url = response.url; data.url = response.put_url;
data.delete_url = response.delete_url;
data.delete_type = response.delete_type;
data.jqXHR = $this.fileupload('send', data); data.jqXHR = $this.fileupload('send', data);
} else { } else {
file.error = response.message || ('Error #' + response.status); file.error = response.message || ('Error #' + response.status);
...@@ -132,8 +134,8 @@ ...@@ -132,8 +134,8 @@
} }
)).bind({ )).bind({
fileuploadfailed: function (e, data) { fileuploadfailed: function (e, data) {
if(data.url) { if(data.delete_url) {
$.ajax(data.url, { type: 'DELETE' }); $.ajax(data.delete_url, { type: data.delete_type });
} }
}, },
fileuploadadded: updateButtonVisibility, fileuploadadded: updateButtonVisibility,
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<button class="btn btn-xs btn-danger delete" title="{% trans %}button.delete{% endtrans %}" {%- if disabled or read_only %} disabled="disabled"{% endif -%}> <button class="btn btn-xs btn-danger delete" title="{% trans %}button.delete{% endtrans %}" {%- if disabled or read_only %} disabled="disabled"{% endif -%}>
{{- irstea_icon('trash') -}} {{- irstea_icon('trash') -}}
</button>&nbsp;<span class="name"> </button>&nbsp;<span class="name">
<a{% if file %} href="{{ path('file_upload_get', {id: file.id, token: csrfToken}) }}"{% endif %}>{{ file.originalFilename|default }}</a> <a{% if file %} href="{{ path('file_upload_get_content', {id: file.id, token: csrfToken}) }}"{% endif %}>{{ file.originalFilename|default }}</a>
</span>&nbsp;(<span class="size"> </span>&nbsp;(<span class="size">
{{- file.size|default -}} {{- file.size|default -}}
</span>) </span>)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment