Sharepoint File FieldType - PullRequest
       18

Sharepoint File FieldType

0 голосов
/ 26 октября 2009

Я реализую несколько списков SharePoint, для которых требуется загрузить файл , поместив файл в каталог списка в папку с именем /Lists/ndomListName broadcast/ndomRecordIdcasts/filename.ext

.

Как я могу добиться этого, используя fieldType, он получает FileUpload WebControl для рендеринга, но не получает файл (FileUpload.HasFile всегда возвращает false) при проверке загрузки страницы для Page.IsPostBack?

public class UploadControl : BaseFieldControl {

    protected FileUpload fileupload;

    protected override void CreateChildControls()
    {
        base.CreateChildControls();
        //FIX FOR PROBLEM
        Page.Form.Enctype = "multipart/form-data";
        //FIX FOR PROBLEM

        if (ControlMode == SPControlMode.Edit || ControlMode == SPControlMode.New || PreviousControlMode == SPControlMode.Edit)
        {
            fileupload = new FileUpload();
            fileupload.ID = "fileUpload";
            Controls.Add(fileupload);
        }
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        if (fileupload != null && Page.IsPostBack)
            throw new Exception("Uploaded Has File " + fileupload.HasFile);
            //Always Returns False
    }

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        EnsureChildControls();
    }

    public override object Value
    {
        get
        {
            EnsureChildControls();
            if (ControlMode == SPControlMode.New || ControlMode == SPControlMode.Edit)
                return "FileName.EXT";
            return "";
        }
        set
        {
            EnsureChildControls();
            var str = (String)value;
        }
    }

}

1 Ответ

1 голос
/ 26 октября 2009

Я не совсем уверен в коде за страницей SharePoint (у меня нет под рукой), но убедитесь, что тег формы имеет:

enctype='multipart/form-data'

атрибут, необходимый для загрузки файла. Если это не так, вы всегда можете сделать

Form.Enctype = "multipart/form-data"

во время раннего цикла страницы. Кроме того, убедитесь, что загрузка не происходит асинхронно, например, на панели обновлений, поскольку я не считаю, что это разрешено.

...