diff --git a/Examples/Blazor3D.Examples.Server/Controllers/FileController.cs b/Examples/Blazor3D.Examples.Server/Controllers/FileController.cs new file mode 100644 index 0000000..a3dd9cc --- /dev/null +++ b/Examples/Blazor3D.Examples.Server/Controllers/FileController.cs @@ -0,0 +1,32 @@ +using Microsoft.AspNetCore.Mvc; + +namespace Blazor3D.Examples.Server.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class FileController : Controller + { + /// + /// Addition as a controller for accessing local files + /// + /// Full path local file + /// + [HttpGet("[action]")] + public IActionResult FileDownload([FromQuery] string link) + { + var saveFileName = link.Substring(link.LastIndexOf('\\') + 1); + try + { + var fileBytes = System.IO.File.ReadAllBytes(link); + + var contentType = "APPLICATION/octet-stream"; + var fileName = saveFileName; + return File(fileBytes, contentType, fileName); + } + catch (Exception ex) + { + return StatusCode(StatusCodes.Status500InternalServerError, "Error download: " + ex.Message); + } + } + } +} diff --git a/Examples/Blazor3D.Examples.Server/Pages/Example02.razor b/Examples/Blazor3D.Examples.Server/Pages/Example02.razor index 035fd28..7f54550 100644 --- a/Examples/Blazor3D.Examples.Server/Pages/Example02.razor +++ b/Examples/Blazor3D.Examples.Server/Pages/Example02.razor @@ -21,6 +21,10 @@

+

+
+ +

@@ -38,6 +42,7 @@ private Scene scene = new Scene(); private Guid loadedObjectGuid = Guid.NewGuid(); private string msg = string.Empty; + private string PathToLocalDisk { get; set; } public void Dispose() { @@ -51,7 +56,8 @@ return base.OnInitializedAsync(); } - private void AddLights(){ + private void AddLights() + { scene.Add(new AmbientLight()); scene.Add(new PointLight() { @@ -119,6 +125,21 @@ await View3D1.SetCameraPositionAsync(new Vector3(0, 100, 250), new Vector3(0, 50, 0)); } + private async Task OnLoadObjNoTexturesLocalFilesButtonClick() + { + var settings = new ImportSettings + { + Format = Import3DFormats.Obj, + //The path is processed without quotes + FileURL = $"api/File/FileDownload?link={PathToLocalDisk}" + }; + + loadedObjectGuid = await View3D1.Import3DModelAsync(settings); + await View3D1.SetCameraPositionAsync( + new Vector3(0, 100, 250), + new Vector3(0, 50, 0)); + } + private async Task OnLoadColladaButtonClick() { var settings = new ImportSettings diff --git a/Examples/Blazor3D.Examples.Server/Program.cs b/Examples/Blazor3D.Examples.Server/Program.cs index cf4ca3a..63b8286 100644 --- a/Examples/Blazor3D.Examples.Server/Program.cs +++ b/Examples/Blazor3D.Examples.Server/Program.cs @@ -5,6 +5,7 @@ // Add services to the container. builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); +builder.Services.AddControllers(); var app = builder.Build(); @@ -30,6 +31,10 @@ app.UseRouting(); +app.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}"); + app.MapBlazorHub(); app.MapFallbackToPage("/_Host");