Uploadify - 如何使用scriptData发送文件大小

时间:2013-03-22 01:16:00

标签: javascript jquery uploadify

我需要使用uploadify发送文件名和文件大小。 我不想上传文件本身,只是发送文件名和文件大小。我注意到uploadify默认发送文件名但不发送文件大小。我使用scriptData进行了实验但是它不起作用。这是我的代码:

$('#logical_item_upload').uploadify({
    uploader        : '/uploadify/uploadify.swf',
    cancelImg       : '/uploadify/cancel.png',
    multi           : true,
    auto            : true,
    script          : "<%=save_upload_logical_items_path%>",
    onComplete      : function(event, queueID, fileObj, response, data) { 
        var dat = eval('(' + response + ')');
        $.getScript(dat.upload);},
    scriptData : {
        '_http_accept': 'application/javascript',
        'format' : 'json',
        '_method': 'post',
        'user_id' : '<%= current_user.id %>'
        }
        });

我需要以下内容:

scriptData : {
    '_http_accept': 'application/javascript',
    'format' : 'json',
    '_method': 'post',
    'user_id' : '<%= current_user.id %>',
    'file_size': file_size
    }

如何在不上传文件的情况下发送文件名和文件大小?

2 个答案:

答案 0 :(得分:0)

您是否尝试使用formData而不是scriptData?我认为你不能让uploadify跳过传递文件(毕竟它是一个文件上传器),但你想要的数据仍会传递给服务器。

至于获取文件大小,我认为没有办法在客户端访问它,但在后端可以使用params[:upload].size轻松访问。

答案 1 :(得分:0)

大小和文件名作为from / header数据的一部分进入服务器。文件大小也隐藏在附加到每个上传队列条目file的{​​{1}}对象中。

您可以在服务器端中止/取消上传,但这看起来很混乱。

为什么不将所有文件和长度的json字符串发送到另一个服务器处理程序而不是接收文件?您可以从上传队列中的“文件”对象中提取它。