我想在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;
我该怎么办?
答案 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);
}
}