首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上载scriptData问题

上载scriptData问题
EN

Stack Overflow用户
提问于 2009-11-25 00:27:40
回答 4查看 8.4K关注 0票数 1

我在上传时遇到了scriptData的问题,我非常确定配置语法是好的,但是无论我做什么,scriptData都不会被传递给上传脚本。

我用flash v.Shockwave Flash9.0 r31在FF和Chrome上进行了测试

这是配置:

代码语言:javascript
复制
    $(document).ready(function() {
    $('#id_file').uploadify({
        'uploader'          : '/media/filebrowser/uploadify/uploadify.swf',
        'script'            : '/admin/filebrowser/upload_file/',
        'scriptData'        : {'session_key': 'e1b552afde044bdd188ad51af40cfa8e'},
        'checkScript'       : '/admin/filebrowser/check_file/',
        'cancelImg'         : '/media/filebrowser/uploadify/cancel.png',
        'auto'              : false,
        'folder'            : '',
        'multi'             : true,
        'fileDesc'          : '*.html;*.py;*.js;*.css;*.jpg;*.jpeg;*.gif;*.png;*.tif;*.tiff;*.mp3;*.mp4;*.wav;*.aiff;*.midi;*.m4p;*.mov;*.wmv;*.mpeg;*.mpg;*.avi;*.rm;*.pdf;*.doc;*.rtf;*.txt;*.xls;*.csv;',
        'fileExt'           : '*.html;*.py;*.js;*.css;*.jpg;*.jpeg;*.gif;*.png;*.tif;*.tiff;*.mp3;*.mp4;*.wav;*.aiff;*.midi;*.m4p;*.mov;*.wmv;*.mpeg;*.mpg;*.avi;*.rm;*.pdf;*.doc;*.rtf;*.txt;*.xls;*.csv;',
        'sizeLimit'         : 10485760,
        'scriptAccess'      : 'sameDomain',
        'queueSizeLimit'    : 50,
        'simUploadLimit'    : 1,
        'width'             : 300,
        'height'            : 30,
        'hideButton'        : false,
        'wmode'             : 'transparent',
        translations        : {
                              browseButton: 'BROWSE',
                              error: 'An Error occured',
                              completed: 'Completed',
                              replaceFile: 'Do you want to replace the file',
                              unitKb: 'KB',
                              unitMb: 'MB'
        }
    });
    $('input:submit').click(function(){
        $('#id_file').uploadifyUpload();
        return false;
    });
});

我检查了其他值(文件名)是否正确传递,但session_key没有正确传递。

这是来自django-filebrowser的装饰器代码,你可以看到它检查request.POST.get('session_key'),问题是request.POST是空的。

代码语言:javascript
复制
def flash_login_required(function):
    """
    Decorator to recognize a user  by its session.
    Used for Flash-Uploading.
    """

    def decorator(request, *args, **kwargs):
        try:
            engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])
        except:
            import django.contrib.sessions.backends.db
            engine = django.contrib.sessions.backends.db
        print request.POST
        session_data = engine.SessionStore(request.POST.get('session_key'))
        user_id = session_data['_auth_user_id']
        # will return 404 if the session ID does not resolve to a valid user
        request.user = get_object_or_404(User, pk=user_id)
        return function(request, *args, **kwargs)
    return decorator
EN

回答 4

Stack Overflow用户

发布于 2012-06-02 02:14:37

我找到了一个不使用scriptData的解决方案。您可以通过URL传递数据:

代码语言:javascript
复制
$("#image_upload1").uploadify({
            'method':'POST',
            'buttonText':'Select',
            'fileTypeDesc' : 'Image Files',
            'fileTypeExts' : '*.gif; *.jpg; *.png',
            'swf':'<?php echo base_url()?>resources/flash/uploadify.swf',
            'uploader':'<?php echo site_url('item/update_item_images/'.$picid[0]); ?>',
            'width': 40,
            'multi':false,
            'onUploadComplete':function(file)
            {
                $('.original').hide();
                $('#image1').attr('style','background-image:url("../resources/uploads/<?php echo $id;?>/'+file.name+'");background-size: 140px 119px;');
                $('#hidden_img_value1').attr('value',file.name)
            }
        });

在这里,我在uploader中传递了值$picid[0]。您可以在您的控制器中访问这些数据。

票数 2
EN

Stack Overflow用户

发布于 2012-06-01 16:18:10

@Jimbo删除反逗号(')后,控制器中也不接收该值。

代码语言:javascript
复制
$("#image_upload1").uploadify({
            'method':'POST',
            'buttonText':'Select',
            'fileTypeDesc' : 'Image Files',
            'fileTypeExts' : '*.gif; *.jpg; *.png',
            'swf':'<?php echo base_url()?>resources/flash/uploadify.swf',
            'uploader':'<?php echo site_url('item/update_item_image1')?>',
            'width': 40,
            'multi':false,
            'scriptData':{id:'<?=$picid[0]?>'},
            'onUploadComplete':function(file)
            {
                //alert(response);
                $('.original').hide();
                $('#image1').attr('style','background-image:url("../resources/uploads/18/'+file.name+'")');
                $('#hidden_img_value1').attr('value',file.name)
            }
        });
票数 1
EN

Stack Overflow用户

发布于 2009-12-17 20:14:33

这听起来可能很愚蠢,但您确定这是session_key问题吗?

我在filebrowser+uploadify上遇到了身份验证问题,但问题不在session_key,而是在Apache中设置的HTTP digest身份验证集保护了站点,尽管session_key发送得很好,但uploadify不发送HTTP身份验证头。

您的web服务器是否需要任何形式的身份验证?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1791200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档