我正在实现几个SharePoint列表,需要文件上传,将该文件放在名为/ list /{ListName}/{RecordId}/filename.ext的文件夹下的列表目录中。
如何使用fieldType实现这一点,它使FileUpload WebControl呈现,但在页面加载检查Page.IsPostBack时没有接收文件(FileUpload.HasFile总是返回false)?
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;
}
}
}发布于 2009-10-26 03:52:51
我不完全确定SharePoint页面后面的代码(没有一个方便的),但是要确保表单标记有一个:
enctype='multipart/form-data'属性,因为它是文件上载所必需的。如果不是的话,你可以做一个
Form.Enctype = "multipart/form-data"在早期的页面循环方法中。另外,确保上传不会异步进行,比如在Update中,因为我认为它是不允许的。
https://stackoverflow.com/questions/1622713
复制相似问题