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
$token = $this->csrfProvider->generateCsrfToken(self::CSRF_INTENTION);
$location = $this->router->generate(
'file_upload_put',
[
'id' => $file->getId(),
'token' => $token
],
RouterInterface::ABSOLUTE_URL
);
$parameters = [
'id' => $file->getId(),
'token' => $token
];
$delete_url = $this->router->generate('file_upload_delete', $parameters);
return $this->createResponse(
Response::HTTP_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")
* @param Request $request
* @param UploadedFile $file
*/
public function putAction(Request $request, UploadedFile $file)
public function putContentAction(Request $request, UploadedFile $file)
{
$this->validateToken($request);
......@@ -150,7 +154,7 @@ class UploadController extends Controller
'name' => $file->getOriginalFilename(),
'type' => $file->getMimeType(),
'size' => $file->getSize(),
'url' => $this->router->generate('file_upload_get', $parameters),
'url' => $this->router->generate('file_upload_get_content', $parameters),
'delete_type' => 'DELETE',
'delete_url' => $this->router->generate('file_upload_delete', $parameters),
]
......@@ -160,12 +164,12 @@ class UploadController extends Controller
}
/**
* @Route("/{id}", name="file_upload_get")
* @Route("/{id}/content", name="file_upload_get_content")
* @Method("GET")
* @param Request $request
* @param UploadedFile $file
*/
public function getAction(Request $request, UploadedFile $file)
public function getContentAction(Request $request, UploadedFile $file)
{
$this->validateToken($request);
......
......@@ -106,7 +106,9 @@
{ file: { name: file.name, size: file.size, type: file.type, lastModified: file.lastModified } },
function(response) {
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);
} else {
file.error = response.message || ('Error #' + response.status);
......@@ -132,8 +134,8 @@
}
)).bind({
fileuploadfailed: function (e, data) {
if(data.url) {
$.ajax(data.url, { type: 'DELETE' });
if(data.delete_url) {
$.ajax(data.delete_url, { type: data.delete_type });
}
},
fileuploadadded: updateButtonVisibility,
......
......@@ -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 -%}>
{{- irstea_icon('trash') -}}
</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">
{{- file.size|default -}}
</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