gpt4 book ai didi

file-upload - 在 jquery 文件上传中多次上传大文件

转载 作者:行者123 更新时间:2023-12-02 03:36:40 26 4
gpt4 key购买 nike

  • 我引用了 jquery 文件上传的示例并创建了一个演示应用程序运行良好,我能够很好地上传文件。
  • 但我在另一个应用程序中进行的相同集成,但不是工作正常 这里的区别只是演示有一个 .erb格式,此应用程序具有 .haml 格式。
  • 在这里我也可以上传最大 100mb 的文件,但超过 100mb 的文件正在花费时间并且在服务器日志中显示“无内存错误 - 分配内存失败”。然后它再次开始上传。
  • 当我在取消后刷新页面时,我看到文件正在多次上传。我无法找到正确的原因这个问题,是否是低 RAM 的问题,如果是,同样是对于演示应用程序来说工作正常,我已经通过它上传了多达 6gb。
  • 这是我的代码

    application.js

    $(document).ready(function(){
    var fileUploadErrors = {
    maxFileSize: 'File is too big',
    minFileSize: 'File is too small',
    acceptFileTypes: 'Filetype not allowed',
    maxNumberOfFiles: 'Max number of files exceeded',
    uploadedBytes: 'Uploaded bytes exceed file size',
    emptyResult: 'Empty file upload result'
    };
    $('#fileupload').fileupload({
    autoUpload : true,
    maxRetries : 100,
    retryTimeout : 500,
    fail : function(e, data) {
    var fu = $(this).data('blueimp-fileupload') || $(this).data('fileupload'), retries = data.context.data('retries') || 0, retry = function() {
    $.getJSON('#fileupload', {
    file : data.files[0].name
    }).done(function(result) {
    var file = result.file;
    data.uploadedBytes = file && file.size;
    data.data = null;
    data.submit();
    }).fail(function() {
    fu._trigger('fail', e, data);
    });
    };
    if (data.errorThrown !== 'abort' && data.uploadedBytes < data.files[0].size && retries < fu.options.maxRetries) {
    retries += 1;
    data.context.data('retries', retries);
    window.setTimeout(retry, retries * fu.options.retryTimeout);
    return;
    }
    data.context.removeData('retries');
    $.blueimp.fileupload.prototype.options.fail.call(this, e, data);
    }
    });
    $.getJSON($('#fileupload').prop('action'), function (files) {
    var fu = $('#fileupload').data('blueimpFileupload'),
    template;
    fu._adjustMaxNumberOfFiles(-files.length);
    console.log(files);
    template = fu._renderDownload(files)
    .appendTo($('#fileupload .files'));
    fu._reflow = fu._transition && template.length &&
    template[0].offsetWidth;
    template.addClass('in');
    $('#loading').remove();
    });

控制者

def index
@assets = Asset.all
respond_to do |format|
format.html
format.json { render json: @assets.map{|asset| asset.to_jq_asset } }
end
end

型号

class Asset < ActiveRecord::Base
has_attached_file :upload
do_not_validate_attachment_file_type :upload
include Rails.application.routes.url_helpers
def to_jq_asset
{
"id" => read_attribute(:id),
"name" => read_attribute(:upload_file_name),
"size" => read_attribute(:upload_file_size),
"content_type" => read_attribute(:upload_content_type),
"url" => upload.url(:original),
"delete_url" => asset_path(self),
"delete_type" => "DELETE"
}
end
end
  • index.html.haml我试图在这里添加我的索引文件,但编辑器不接受它。这样你就可以引用这个link

为此,我使用了 rails 4、ruby 2.1.0,文件上传使用了 paperclip 和 jquery-fileupload-rails gem提前致谢。

最佳答案

  • 我解决了这个问题,我比较了我的演示应用程序和这个的 gem 文件app,发现这里rails的版本是4.0.2,在demo中应用程序是 4.1.0。所以更新了这个 gem,瞧,一切正常太好了。
  • 在更新到 4.1.0 之后还有一件事我有一个错误“nil:NilClass 的未定义方法‘环境’”这是由于sass 导轨。我也必须更新它并且我也需要将 sprockets 设置为版本 1.11.0,因为在 bundle install 之后它得到已更新至 1.12.0。
  • 希望这对某人有帮助

关于file-upload - 在 jquery 文件上传中多次上传大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22970961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com