Javascript 文件大小过大时停止文件上载-jQuery S3
请查看下面的代码片段。我使用jqueryfileupload和directs3表单将视频上传到AWS。我想有一个5mb的文件大小限制,这是强加之前,视频点击任何本地服务器。我如何修改这段代码,使上传完全停止,并在文件大小超过5mb时提醒用户,如果低于5mb,一切照常进行 我已经在S3表单选项中添加了5mb的内容长度限制,因此拒绝上传大于5mb的内容,但是如果有什么东西可以通知用户上传太大而无法开始,那就更好了Javascript 文件大小过大时停止文件上载-jQuery S3,javascript,jquery,amazon-s3,coffeescript,jquery-file-upload,Javascript,Jquery,Amazon S3,Coffeescript,Jquery File Upload,请查看下面的代码片段。我使用jqueryfileupload和directs3表单将视频上传到AWS。我想有一个5mb的文件大小限制,这是强加之前,视频点击任何本地服务器。我如何修改这段代码,使上传完全停止,并在文件大小超过5mb时提醒用户,如果低于5mb,一切照常进行 我已经在S3表单选项中添加了5mb的内容长度限制,因此拒绝上传大于5mb的内容,但是如果有什么东西可以通知用户上传太大而无法开始,那就更好了 $ -> $(".direct-upload").each -&g
$ ->
$(".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
$->
$(“.direct upload”)。每个->
表格=$(本)
$(此).fileupload
url:form.attr(“操作”)
类型:“职位”
自动上载:true
数据类型:“xml”
添加:(事件、数据)->
如果数据文件[0],大小<5242880
$.ajax
url:“/signed\u url”
键入:“获取”
数据类型:“json”
数据:
文件:
标题:data.files[0]。名称
异步:false
成功:(数据)->
form.find(“输入[name=key]”).val data.key
form.find(“输入[name=policy]”).val data.policy
form.find(“输入[name=signature]”).val data.signature
数据提交()
发送:(e,数据)->
$(“.progress,#dropzone”).fadeIn()
$.each data.files(索引,文件)->
$('.well').html(“”.append(“上载:“+file.name+”
“+”文件大小:”+(file.size/1000000)+“MB”)
进展:(e,数据)->
百分比=未定义
百分比=数学四舍五入((加载/总计)*100)
$(“.bar”).css“宽度”,百分比+“%
失败:(e,数据)->
console.log“失败”
成功:(数据)->
url=未定义
url=decodeURIComponent($(数据).find(“位置”).text()
$(“#视频文件”).val url
完成:(事件、数据)->
$(“#新#U视频”)。提交()
$(“.progress”).fadeOut 1200,->
$(“.bar”).css“宽度”,0
更新:
这很有效。在/signed_url之前移动if语句可防止将太大的文件发送到服务器并向用户发出警告
$ ->
$(".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
$->
$(“.direct upload”)。每个(数据)->
表格=$(本)
$(此).fileupload
url:form.attr(“操作”)
类型:“职位”
自动上载:true
数据类型:“xml”
添加:(事件、数据)->
如果数据文件[0],大小<5242880
$.ajax
url:“/signed\u url”
键入:“获取”
数据类型:“json”
数据:
文件:
标题:data.files[0]。名称
异步:false
成功:(数据)->
form.find(“输入[name=key]”).val data.key
form.find(“输入[name=policy]”).val data.policy
form.find(“输入[name=signature]”).val data.signature
数据提交()
其他的
警报(“文件太大”)
发送:(e,数据)->
$(“.progress,#dropzone”).fadeIn()
$.each data.files(索引,文件)->
$('.well').html(“”.append(“上传:“+file.name+”
“+”文件大小:”+(Math.round(file.size/1000000))+“MB”)
进展:(e,数据)->
百分比=未定义
百分比=数学四舍五入((加载/总计)*100)
$(“.bar”).css“宽度”,百分比+“%
失败:(e,数据)->
console.log“失败”
成功:(数据)->
url=未定义
url=decodeURIComponent($(数据).find(“位置”).text()
$(“#视频文件”).val url
完成:(事件、数据)->
$(“#新#U视频”)。提交()
$(“.progress”).fadeOut 1200,->
$(“.bar”).css“宽度”,0
这和我做这件事的方式差不多。如果你不提交,它就不会发送文件
当文件太大时,是否要将ajax请求提交到/signed\u URL
?也许您应该将所有这些都移动到if data.files[0].size<5242880
块中?
<form method="post" action="./step2.php" enctype="multipart/form-data" id="formID" name="formID">
<input type="text" name="title" id="title" />
<input type="file" name="pptfile" id="pptfile"/>
<input type="submit" name="btn" id="btn" />
<script type="text/javascript">
function checkUpload(size)
{
if(size>25)
{
var n = size.toFixed(2);
alert('Your file size is: ' + n + "MB, and it is too large to upload! Please try to upload smaller file (25MB or less).");
document.getElementById("btn").style.display='none';
}
else
{
//alert('File size is OK');
$('#tbn').show();
}
}
$('#pptfile').bind('change', function() {
var fileSize = this.files[0].size/1024/1024;
checkUpload(fileSize);
});
</script>
</form>
功能检查上传(大小)
{
如果(尺寸>25)
{
var n=固定尺寸(2);
警报('您的文件大小为:'+n+“MB,太大,无法上载!请尝试上载较小的文件(25MB或更小)。';
document.getElementById(“btn”).style.display='none';
}
其他的
{
//警报(“文件大小正常”);
$('#tbn').show();
}
}
$('#pptfile').bind('change',function()){
var fileSize=this.files[0].size/1024/1024;
检查上传(文件大小);
});
为我工作:
checkFileSize(event) {
f = document.getElementById('id_ifile');
if (f.files.length > 0 && f.files[0].size > 3 * 1024 ** 2) {
alert( 'The file is too large (no more than 3MB)' );
event.preventDefault();
}
}
是的,你是对的,如果文件大小超过限制,我不想向/signed_URL提交请求。我已经用我的最新代码更新了这个问题。这在本质上是有效的,因为超过限制的文件不会启动提交调用,上载过程会停止,而低于限制的文件会启动上载过程,但是上载不会完成,也不会调用成功函数