123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net.Http.Headers;
- using System.Threading.Tasks;
- using HaBookCms.AzureBlobStorageTest.Models;
- using HaBookCms.AzureStorage.AzureBlob.Container;
- using HaBookCms.AzureStorage.AzureBlob.Implements;
- using HaBookCms.AzureStorage.AzureBlob.Interfaces;
- using HaBookCms.AzureStorage.AzureBlob.Models;
- using HaBookCms.AzureStorage.AzureTable.Interfaces;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.WindowsAzure.Storage;
- using Microsoft.WindowsAzure.Storage.Blob;
- namespace HaBookCms.AzureBlobStorageTest.Controllers
- {
- [Route("api/[controller]")]
- [ApiController]
- public class ValuesController : ControllerBase
- {
- public IAzureBlobDBRepository _azureBlobDBRepository;
- public IAzureTableDBRepository _azureTableDBRepository;
- public ValuesController(IAzureBlobDBRepository azureBlobDBRepository, IAzureTableDBRepository azureTableDBRepository) {
- _azureBlobDBRepository = azureBlobDBRepository;
- _azureTableDBRepository = azureTableDBRepository;
- }
- // GET api/values
- [HttpGet]
- public ActionResult<IEnumerable<string>> Get()
- {
- return new string[] { "value1", "value2" };
- }
- // GET api/values/5
- [HttpGet("{id}")]
- public ActionResult<string> Get(int id)
- {
- return "value";
- }
- // POST api/values
- [HttpPost]
- public void Post([FromBody] string value)
- {
- }
- // PUT api/values/5
- [HttpPut("{id}")]
- public void Put(int id, [FromBody] string value)
- {
- }
- // DELETE api/values/5
- [HttpDelete("{id}")]
- public void Delete(int id)
- {
- }
- [HttpPost("urls")]
- public async Task<IActionResult> Index()
- {
- var urls = new List<string>();
- var storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=teammodelstorage;AccountKey=Yq7D4dE6cFuer2d2UZIccTA/i0c3sJ/6ITc8tNOyW+K5f+/lWw9GCos3Mxhj47PyWQgDL8YbVD63B9XcGtrMxQ==;EndpointSuffix=core.chinacloudapi.cn");
- var blobClient = storageAccount.CreateCloudBlobClient();
- var container = blobClient.GetContainerReference("staticcontent");
- var data = await container.ListBlobsSegmentedAsync
- ("", true, BlobListingDetails.All, 200, null, null, null);
- foreach (IListBlobItem item in data.Results)
- {
- urls.Add(item.StorageUri.PrimaryUri.ToString());
- }
- return Ok(urls);
- }
- [HttpPost("Upload")]
- //[Produces("application/json")]
- //[Consumes("application/json", "multipart/form-data")]//此处为新增
- public async Task<List<AzureBlobModel>> Upload(IFormFile[] file )
- {
- //var storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=teammodelstorage;AccountKey=Yq7D4dE6cFuer2d2UZIccTA/i0c3sJ/6ITc8tNOyW+K5f+/lWw9GCos3Mxhj47PyWQgDL8YbVD63B9XcGtrMxQ==;EndpointSuffix=core.chinacloudapi.cn");
- //var blobClient = storageAccount.CreateCloudBlobClient();
- //var container = blobClient.GetContainerReference("staticcontent");
- ////var file = picture.File;
- //foreach (IFormFile f in file) {
- // var parsedContentDisposition =
- // ContentDispositionHeaderValue.Parse(f.ContentDisposition);
- // var filename = Path.Combine(parsedContentDisposition.FileName.Trim('"'));
- // var blockBlob = container.GetBlockBlobReference(filename+Guid.NewGuid());
- // await blockBlob.UploadFromStreamAsync(f.OpenReadStream());
- //}
- List<AzureBlobModel> blobModels= _azureBlobDBRepository.UploadFiles(file, new FileContainer()).Result.ToList<AzureBlobModel>();
- await _azureTableDBRepository.SaveAll<AzureBlobModel>(blobModels);
- return blobModels;
- }
- [HttpGet("Download")]
- //[Produces("application/json")]
- //[Consumes("application/json", "multipart/form-data")]//此处为新增
- public async Task<IActionResult> Download()
- {
- var storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=teammodelstorage;AccountKey=Yq7D4dE6cFuer2d2UZIccTA/i0c3sJ/6ITc8tNOyW+K5f+/lWw9GCos3Mxhj47PyWQgDL8YbVD63B9XcGtrMxQ==;EndpointSuffix=core.chinacloudapi.cn");
- var blobClient = storageAccount.CreateCloudBlobClient();
- var container = blobClient.GetContainerReference("staticcontent");
- string url = "https://teammodelstorage.blob.core.chinacloudapi.cn/staticcontent/234fa2a1-7309-4241-886f-c58ae195f9da.pdf";
- CloudBlockBlob blockBlob = container.GetBlockBlobReference("234fa2a1-7309-4241-886f-c58ae195f9da.pdf");
- using (var fileStream = System.IO.File.OpenWrite(@"F:\234fa2a1-7309-4241-886f-c58ae195f9da.pdf"))
- {
- await blockBlob.DownloadToStreamAsync(fileStream);
- }
- //var file = picture.File;
- //foreach (IFormFile f in file)
- //{
- // var parsedContentDisposition =
- // ContentDispositionHeaderValue.Parse(f.ContentDisposition);
- // var filename = Path.Combine(parsedContentDisposition.FileName.Trim('"'));
- // var blockBlob = container.GetBlockBlobReference(filename + Guid.NewGuid());
- // await blockBlob.UploadFromStreamAsync(f.OpenReadStream());
- //}
- return Ok();
- }
-
- }
- }
|