Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文件大小过大时停止文件上载-jQuery S3_Javascript_Jquery_Amazon S3_Coffeescript_Jquery File Upload - Fatal编程技术网

Javascript 文件大小过大时停止文件上载-jQuery S3

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

请查看下面的代码片段。我使用jqueryfileupload和directs3表单将视频上传到AWS。我想有一个5mb的文件大小限制,这是强加之前,视频点击任何本地服务器。我如何修改这段代码,使上传完全停止,并在文件大小超过5mb时提醒用户,如果低于5mb,一切照常进行

我已经在S3表单选项中添加了5mb的内容长度限制,因此拒绝上传大于5mb的内容,但是如果有什么东西可以通知用户上传太大而无法开始,那就更好了

 $ ->
      $(".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提交请求。我已经用我的最新代码更新了这个问题。这在本质上是有效的,因为超过限制的文件不会启动提交调用,上载过程会停止,而低于限制的文件会启动上载过程,但是上载不会完成,也不会调用成功函数