.netコアWebサイトのユーザ名に基づいてサブディレクトリを作成する必要がありますが、これを行うにはどうすればよいでしょうか?.netコア2のユーザログインにディレクトリを作成する方法
私はApplicationUserで追加しようとしましたが、正しく追加する方法がわかりません。私が知っていることは完全に間違っています。
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Hosting;
using System.IO;
namespace BRSCRM.Models
{
// Add profile data for application users by adding properties to the ApplicationUser class
public class ApplicationUser : IdentityUser
{
private IHostingEnvironment hostingEnvironment;
public string HomeDir { get; set; }
HomeDir=HostingEnvironment.WebRootPath + UserName;
string path = this.hostingEnvironment.WebRootPath + "\\uploads\\" + UserName;
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
}
私はドキュメントが優れていた希望、彼らがそこに開始した材料を得ることがたくさんあるようだが、あなたはそれが助けを見つけるために、かなり厳しい取得します覆われていない何かをしようとしてやって行くとき。私がやろうとしています何
はメンバー
私は私が近づいていますと思いますが、私は今、このエラーを取得するためsupportfileuploadingです。
'Microsoft.AspNetCore.Hosting.IHostingEnvironment'. Model bound complex types must not be abstract or value types and must have a parameterless constructor Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexTypeModelBinder.CreateModel(ModelBindingContext
私はIHostingEnvironmentのWebルートパスを読んでいるとは思われません。それはとにかく試してみました仕事didntのため、
この
は、私がこれまで持っているもので、私はAccountController.csで登録アクションに私のコードを移動..
if (result.Succeeded)
{
await _userManager.AddToRoleAsync(user, "Member");
_logger.LogInformation("User created a new account with password.");
//Add code here to create directory....
string webRootPath = _hostingEnvironment.WebRootPath;
string contentRootPath = _hostingEnvironment.ContentRootPath;
var userId = User.FindFirstValue(ClaimTypes.Email);
string path = webRootPath + "\\uploads\\" + userId;
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
は、環境のためのコードを削除します私のローカルシステム上にディレクトリを追加するだけで、私はユーザー名、電子メール、またはそれ以外のものを取得する方法がわからない申し立てフィールドで何も取得していないことがわかりました、これは私を夢中にさせてくれます。
私は誰がファイルをアップロードしているかを追跡する必要があるため、自分のディレクトリにファイルが存在する必要があるため、このプロジェクトには使用できない例がありません。努力の欠如私は日を探していた。 – webdev8183
MVCを使用していますか?現在ログインしているユーザーのコントローラの「User」プロパティから、IDや名前などのユーザープロパティを取得できます。 IE:var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);次に、それを使用して、string path = this.hostingEnvironment.WebRootPath + "\\ uploads \\" + useridのようなフォルダパスを構築できます。フォルダが存在しない場合は作成します。これはあなたの要求に応えるようです。 – Steve
実装がうまくいけば落ちてしまいますが、最初にコントローラに追加しようとしましたが、動作させる方法がわからないので、助けを求めていました。 – webdev8183