2017-09-12 10 views
0

私はメザニンを使って簡単なブログのWebサイトを展開しています。ウェブサイトの各部分には、ブログチームによって簡単に変更する必要があるヘッダーがあります。私のソリューションは、FileFieldのモデルを作成してブログチームが管理ページのページヘッダーを変更することでした。私は静的およびメディアファイルを格納するためにS3バケットを使用しています。メザニンFileBrowserで画像を選択できない

チーフクレーム:ユーザーが写真をアップロードすると、ファイルはS3バケットにアップロードされますが、使用したいファイルの選択ボタンをクリックできません。 Mezzanine file selector button

私の実装:私は主にファイルアップローダーのためのバックエンドを実装するためにthis tutorialを使用

(私はS3を使用)。

settings.py

AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME 
STATICFILES_LOCATION = 'static' 
STATICFILES_STORAGE = 'custom_storages.StaticStorage' 
STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, 
STATICFILES_LOCATION) 

MEDIAFILES_LOCATION = 'media' 
MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, 
MEDIAFILES_LOCATION) 
DEFAULT_FILE_STORAGE = 'custom_storages.MediaStorage' 
MEDIA_ROOT = '' 

custom_storages.py

from django.conf import settings 
from storages.backends.s3boto import S3BotoStorage 
from filebrowser_safe.storage import S3BotoStorageMixin 

class StaticStorage(S3BotoStorage, S3BotoStorageMixin): 
    location = settings.STATICFILES_LOCATION 


class MediaStorage(S3BotoStorage, S3BotoStorageMixin): 
    location = settings.MEDIAFILES_LOCATION 

models.py

class Header(models.Model): 
    file = FileField("File", max_length=200, format="Image", 
     upload_to=upload_to("galleries.GalleryImage.file", "")) 

    # other fields ... 

エラーメッセージ:

FB_FileBrowseField.js:16 Uncaught TypeError: 
    Cannot set property 'value' of null at FileSubmit (FB_FileBrowseField.js:16) 
    at HTMLAnchorElement.onclick (?pop=1&type=Image:230) 

FB_FileBrowserField.js

function FileSubmit(FilePath, FileURL, ThumbURL, FileType) { 
    var input_id=window.name.replace(/____/g,'-').split("___").join("."); 

    // left out variables for post simplicity 

    input = opener.document.getElementById(input_id); 

    // set new value for input field 
    input.value = FilePath; 

    // cut out rest of the code 

問題はオープナー方法はnullを返すことのようです。これは、htmlのinput_idが見つからないためです。なぜ私はボックスソフトウェアを使用しているので、これがエラーであるのか分かりません。私はこの問題をよりよく診断し、潜在的にそれを修正するために誰かが私を正しい方向に向けることができるかどうか疑問に思っています。

答えて

1

メザニンが画像として認識しない拡張子のファイルをアップロードしている可能性があります。

デフォルトの拡張子がfilebrowser-safeに設定されています

'Image': ['.jpg', '.jpeg', '.gif', '.png', '.tif', '.tiff', '.svg'] 

あなたは例えば、FILEBROWSER_EXTENSIONS設定で独自の拡張機能を変更したり、作成することができます。

FILEBROWSER_EXTENSIONS = { 
    'Image': ['.jpg', '.jpeg', '.gif', '.png', '.tif', '.tiff', '.svg', '.image'], 
} 

代わりに、あなた自身を変更したり、作成することができます形式をFILEBROWSER_SELECT_FORMATSとし、名前の辞書(FileFieldのパラメータformatに渡す)と拡張子のリスト(デフォルトので定義する必要があります)またはFILEBROWSER_EXTENSIONS)。例:

FILEBROWSER_SELECT_FORMATS = { 
    'Multimedia': ['Image', 'Video', 'Audio'], 
} 
関連する問題