如何在dnn模块编程中使用文件上传控件?

时间:2016-09-13 05:25:23

标签: c# asp.net file-upload dotnetnuke

我想在dnn模块编程中使用文件上传控件。

我知道dnn中有DnnFilePicker,但我想要一个简单的代码,每个用户都可以上传文件,之后可以显示,编辑和删除它。

有这段代码,但还不完整。

<%@ Register TagPrefix="dnn" Assembly="DotNetNuke.Web" Namespace="DotNetNuke.Web.UI.WebControls" %>
<dnn:DnnFilePicker runat="server" ShowFolders="false" ID="fpUserFiles" FileFilter="pdf,gif,jpg" />

Page_Load事件中,设置文件夹:

// Limit filepath to user's folder

fpUserFiles.FilePath = FolderManager.Instance.GetUserFolder(User).FolderPath;

我该怎么办?

2 个答案:

答案 0 :(得分:0)

如果您在模块视图中有某种Save事件,您只需获取用户选择的文件的FileId以将其保存在数据库中:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    ModelData model = new ModelData {
        FileId = fpUserFiles.FileID
    };
    // TODO: Save your model data 
}

在Page_Load事件中,您还可以通过在文件选择器上设置fileID来加载模型数据(如果用户正在编辑现有模型)。这将在选择器控件中预先选择文件。

fpUserFiles.FileID = model.FileId

要在另一个模块视图中使用fileId,您可以从模型数据中获取它并获取文件的属性,如下例所示:

FileInfo fi = (FileInfo)FileManager.Instance.GetFile(model.FileId);
if (fi != null)
{
    pic.ImageUrl = "/" + _currentPortal.HomeDirectory + "/" + fi.RelativePath;
}

答案 1 :(得分:0)

使用此代码解决了我的问题。 每个用户都可以在其文件夹中上传其文件。 protected void Page_Load(object sender,EventArgs e)         {             username = UserController.GetCurrentUserInfo()。Username.ToString();

    }

    protected void Button1_Click1(object sender, System.EventArgs e)
    {
        var folder = Server.MapPath("~/uploads/Company/" + username);

        if (this.FileUpload1.HasFile)
        {
            Directory.CreateDirectory(folder);
            this.FileUpload1.SaveAs(folder + "/" + this.FileUpload1.FileName);            
        }

    }