草庐IT

javascript - Html5 block 上传在 Chrome 25 中不起作用?

coder 2023-08-05 原文

我有以下代码使用 Html5 上传图像 block 。

<!DOCTYPE html>
<form>
<div class="example">
    #bytes/chunk:
    <input id="numChunks" value="1048576" />
    <input id="files" class="button" type="file" />
    <div id="bars">
        <span id="numofchunks">Num of chunks: </span>
        <br />
        <span id="message"></span>
    </div>
</div>
</form>
<script src="~/Scripts/jquery-1.7.1.js" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function () {

        document.querySelector('input[type="file"]').addEventListener('change', function (e) {
            var blob = this.files[0];

            var BYTES_PER_CHUNK = (1024 * 1024) / 2; // 1MB chunk sizes.
            var SIZE = blob.size;
            $('#numofchunks').text($('#numofchunks').text() + SIZE / BYTES_PER_CHUNK);
            var start = 10;
            var end = BYTES_PER_CHUNK;
            var counter = 1;
            while (start < SIZE) {
                upload(blob.slice(start, end), counter);

                start = end;
                end = start + BYTES_PER_CHUNK;
                counter = counter + 1;
            }
        }, false);

    });

        function upload(blobOrFile, counter) {
            var xhr = new XMLHttpRequest();
            xhr.open('POST', '/basic/html5', true);
            xhr.setRequestHeader("Content-Type", "image/jpeg");
            //            xhr.setRequestHeader("X-File-Name", blobOrFile.fileName);
            xhr.onload = function () { $('#message').text($('#message').text() + counter + "  ") };

            var fd = new FormData();
            fd.append("fileToUpload", blobOrFile);
            xhr.send(fd);
        };


</script>

这适用于所有浏览器,但不适用于我的 Chrome。在 Chrome 中,我没有收到服务器上的请求。在 chrome 网络跟踪中,它始终将请求显示为待处理。

更新:我无法上传大文件(超过 1mb)。我是否将其分 block 或分 block 的大小并不重要。如果图片大小超过 1mb,则不会上传。

请看附上的错误截图

最佳答案

试试这个

function(){
            var blobs = [];

/*
 * function that uploads a fragment of the file
 */
        function uploadChunk(blob, fileName, fileType){

            var xhr = new XMLHttpRequest();

            xhr.open('POST', 'upload_chunks.cfm', false);

            xhr.onload = function(e){
                document.getElementById("messages").innerHTML += "Chunk of size " + blob.size + " uploaded successfully.<br/>";
            }

            xhr.setRequestHeader('X_FILE_NAME', fileName);
            xhr.setRequestHeader('Content-Type', fileType)
            document.getElementById("messages").innerHTML += "Uploading chunk of size " + blob.size + ".<br/>";
            xhr.send(blob);
        }

/*
 * Invoke this function when the file is selected.
 */
        document.querySelector('#userfile').addEventListener('change', function(){
            var file = this.files[0];
            var bytes_per_chunk = 1024 * 1024;
            var start = 0;
            var end = bytes_per_chunk;
            var size = file.size;

            while (start < size) {
    //push the fragments to an array
                blobs.push(file.slice(start, end));
                start = end;
                end = start + bytes_per_chunk;
            }

    //upload the fragment to the server
            while (blob = blobs.shift()) {
    uploadChunk(blob, file.name, file.type);
            }
        })
    })();

来自 http://www.sagarganatra.com/

关于javascript - Html5 block 上传在 Chrome 25 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15614155/

有关javascript - Html5 block 上传在 Chrome 25 中不起作用?的更多相关文章

  1. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  2. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  3. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  4. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  5. ruby-on-rails - Enumerator.new 如何处理已通过的 block ? - 2

    我在理解Enumerator.new方法的工作原理时遇到了一些困难。假设文档中的示例:fib=Enumerator.newdo|y|a=b=1loopdoy[1,1,2,3,5,8,13,21,34,55]循环中断条件在哪里,它如何知道循环应该迭代多少次(因为它没有任何明确的中断条件并且看起来像无限循环)? 最佳答案 Enumerator使用Fibers在内部。您的示例等效于:require'fiber'fiber=Fiber.newdoa=b=1loopdoFiber.yieldaa,b=b,a+bendend10.times.m

  6. ruby-on-rails - Ruby url 到 html 链接转换 - 2

    我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.

  7. ruby - 在匿名 block 中产生 - 2

    我没有理解以下行为(另请参阅inthisSOthread):defdef_testputs'def_test.in'yieldifblock_given?puts'def_test.out'enddef_testdoputs'def_testok'endblock_test=procdo|&block|puts'block_test.in'block.callifblockputs'block_test.out'endblock_test.calldoputs'block_test'endproc_test=procdoputs'proc_test.in'yieldifblock_gi

  8. ruby-on-rails - capybara ::ElementNotFound:无法找到 xpath "/html" - 2

    我正在学习http://ruby.railstutorial.org/chapters/static-pages上的RubyonRails教程并遇到以下错误StaticPagesHomepageshouldhavethecontent'SampleApp'Failure/Error:page.shouldhave_content('SampleApp')Capybara::ElementNotFound:Unabletofindxpath"/html"#(eval):2:in`text'#./spec/requests/static_pages_spec.rb:7:in`(root)'

  9. ruby - Ruby 中的单 block AES 解密 - 2

    我需要尝试一些AES片段。我有一些密文c和一个keyk。密文已使用AES-CBC加密,并在前面加上IV。不存在填充,纯文本的长度是16的倍数。所以我这样做:aes=OpenSSL::Cipher::Cipher.new("AES-128-CCB")aes.decryptaes.key=kaes.iv=c[0..15]aes.update(c[16..63])+aes.final它工作得很好。现在我需要手动执行CBC模式,所以我需要单个block的“普通”AES解密。我正在尝试这个:aes=OpenSSL::Cipher::Cipher.new("AES-128-ECB")aes.dec

  10. ruby - 如何使用 Ruby 将 CSV 文件读入 HTML 表格? - 2

    我正在尝试将一个简单的CSV文件读入HTML表格以在浏览器中显示,但我遇到了麻烦。这就是我正在尝试的:Controller:defshow@csv=CSV.open("file.csv",:headers=>true)end查看:输出:NameStartDateEndDateQuantityPostalCode基本上我只获取标题,而不会读取和呈现CSV正文。 最佳答案 这最终成为最终解决方案:Controller:defshow#OpenaCSVfile,andthenreaditintoaCSV::Tableobjectforda

随机推荐