Veuillez cliquer sur l'extrait ci-dessous. J'utilise jQuery fileUpload et un formulaire direct s3 pour télécharger des vidéos sur AWS. Je voudrais qu'il y ait une limite de 5 Mo qui est imposée avant que la vidéo ne frappe un serveur local. Comment puis-je modifier ce code afin que le téléchargement est arrêté complètement et alerte l'utilisateur lorsque la taille du fichier est supérieure à 5 Mo et si elle est inférieure, tout se poursuit comme d'habitude? J'ai ajouté une limite de longueur de contenu de 5 Mo aux options de formulaire S3, donc les téléchargements de plus grande taille sont refusés, mais il serait préférable s'il y avait quelque chose pour informer l'utilisateur qu'un téléchargement est trop grand pour commencer avec .Arrêter le téléchargement de fichier lorsque la taille du fichier est trop grande - jQuery S3
$ ->
$(".direct-upload").each ->
form = $(this)
$(this).fileupload
url: form.attr("action")
type: "POST"
autoUpload: true
dataType: "xml"
add: (event, data) ->
if data.files[0].size < 5242880
$.ajax
url: "/signed_urls"
type: "GET"
dataType: "json"
data:
doc:
title: data.files[0].name
async: false
success: (data) ->
form.find("input[name=key]").val data.key
form.find("input[name=policy]").val data.policy
form.find("input[name=signature]").val data.signature
data.submit()
send: (e, data) ->
$(".progress, #dropzone").fadeIn()
$.each data.files, (index, file) ->
$('.well').html("").append("Uploading: " + file.name + '<br>' + "File size: " + (file.size/1000000) + ' MB')
progress: (e, data) ->
percent = undefined
percent = Math.round((e.loaded/e.total) * 100)
$(".bar").css "width", percent + "%"
fail: (e, data) ->
console.log "fail"
success: (data) ->
url = undefined
url = decodeURIComponent($(data).find("Location").text())
$("#video_file").val url
done: (event, data) ->
$("#new_video").submit()
$(".progress").fadeOut 1200, ->
$(".bar").css "width", 0
MISE À JOUR:
Cela fonctionne bien. Le déplacement de l'instruction if avant/signed_url empêche l'envoi d'un fichier trop volumineux au serveur et alerte l'utilisateur.
$ ->
$(".direct-upload").each (data) ->
form = $(this)
$(this).fileupload
url: form.attr("action")
type: "POST"
autoUpload: true
dataType: "xml"
add: (event, data) ->
if data.files[0].size < 5242880
$.ajax
url: "/signed_urls"
type: "GET"
dataType: "json"
data:
doc:
title: data.files[0].name
async: false
success: (data) ->
form.find("input[name=key]").val data.key
form.find("input[name=policy]").val data.policy
form.find("input[name=signature]").val data.signature
data.submit()
else
alert("File too big")
send: (e, data) ->
$(".progress, #dropzone").fadeIn()
$.each data.files, (index, file) ->
$('.well').html("").append("Uploading: " + file.name + '<br>' + "File size: " + (Math.round(file.size/1000000)) + ' MB')
progress: (e, data) ->
percent = undefined
percent = Math.round((e.loaded/e.total) * 100)
$(".bar").css "width", percent + "%"
fail: (e, data) ->
console.log "fail"
success: (data) ->
url = undefined
url = decodeURIComponent($(data).find("Location").text())
$("#video_file").val url
done: (event, data) ->
$("#new_video").submit()
$(".progress").fadeOut 1200, ->
$(".bar").css "width", 0
oui vous avez raison, je ne veux pas soumettre la demande à/signed_urls si la taille du fichier dépasse la limite. J'ai mis à jour la question avec mon dernier code. Cela fonctionne essentiellement, car les fichiers dépassant la limite ne lancent pas l'appel de soumission et le processus de téléchargement est interrompu et les fichiers sous la limite démarrent le processus de téléchargement, mais les téléchargements ne sont pas terminés et la fonction de réussite n'est pas appelée – dodgerogers747