首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过一个“添加”按钮在其单个属性中存储多个图像

如何通过一个“添加”按钮在其单个属性中存储多个图像
EN

Stack Overflow用户
提问于 2022-10-31 05:55:24
回答 1查看 52关注 0票数 0

我创建了一个表单,在这个表单中,我通过各自的button.But将图像上传到他们的个人属性中,我想通过单个button.Also在其个人属性中添加图像,在upload.It处于upload.It核心mvc之前显示图像预览,我还在上传之前使用一些jquery对图像进行预览。我的控制器代码:

代码语言:javascript
复制
 if(ar.imge1 != null)
            {
                        string folder = "image/";
                        folder += Guid.NewGuid().ToString() + "_"+ar.imge1.FileName ;




                        ar.pic1 ="/"+folder;

                        string serverFolder = Path.Combine(_IWebHostEnvironment.WebRootPath, folder);
                        ar.imge1.CopyTo(new FileStream(serverFolder, FileMode.Create));

                    }
                    if (ar.imge2 != null)
                    {
                        string folder = "image/";
                        folder += Guid.NewGuid().ToString() + "_" + ar.imge2.FileName;

                        ar.pic2 = "/" + folder;
                        string serverFolder = Path.Combine(_IWebHostEnvironment.WebRootPath, folder);
                        ar.imge2.CopyTo(new FileStream(serverFolder, FileMode.Create));

                    }
                    if (ar.imge3 != null)
                    {
                        string folder = "image/";
                        folder += Guid.NewGuid().ToString() + "_" + ar.imge3.FileName;
                        ar.pic3 = "/" + folder;
                        string serverFolder = Path.Combine(_IWebHostEnvironment.WebRootPath, folder);
                        ar.imge3.CopyTo(new FileStream(serverFolder, FileMode.Create));
                    }

我的示范代码:

代码语言:javascript
复制
  public string? pic1 { get; set; }
        

        public IFormFile imge1 { get; set; }
        
        public string? pic2 { get; set; }
        
        public IFormFile imge2 { get; set; }
     
        public string? pic3 { get; set; }
       
        public IFormFile imge3 { get; set; }

这是我的html:

代码语言:javascript
复制
 <div class="form">
               
                <div class="grid">
                    <div class="form-element">
                        <input type="file" id="file-1" asp-for="imge1" name="imge1">
                        <label for="file-1" id="file-1-preview">
                           
                            <div>
                                <span>+</span>
                            </div>
                        </label>
                    </div>
                    <div class="form-element">
                        <input type="file" id="file-2" asp-for="imge2" name="imge2">
                        <label for="file-2" id="file-2-preview">
                            
                            <div>
                                <span>+</span>
                            </div>
                        </label>
                    </div>
                    <div class="form-element">
                        <input type="file" id="file-3"  asp-for="imge3" name="imge3">
                        <label for="file-3" id="file-3-preview">
                            
                            <div>
                                <span>+</span>
                            </div>

jquery:

代码语言:javascript
复制
<script>
        function previewBeforeUpload(id){
  document.querySelector("#"+id).addEventListener("change",function(e){
    if(e.target.files.length == 0){
      return;
    }
    let file = e.target.files[0];
    let url = URL.createObjectURL(file);
    document.querySelector("#"+id+"-preview div").innerText = file.name;
    document.querySelector("#"+id+"-preview img").src = url;
  });
}

previewBeforeUpload("file-1");
previewBeforeUpload("file-2");
previewBeforeUpload("file-3");



    </script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-31 07:47:26

=====================================

我的财务主任:

代码语言:javascript
复制
using Microsoft.AspNetCore.Mvc;
using WebAppMvc.Models;

namespace WebAppMvc.Controllers
{
    public class TestController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public string upload(FileModel files)
        {
            return "hello";
        }
    }
}

multiple参数的帮助下,我的视图可以在单击“选择文件”按钮时选择多个图像。然后,通过脚本动态生成html内容,在上传图像时显示预览图像。

代码语言:javascript
复制
@model WebAppMvc.Models.FileModel

<div>
    <div class="form-element">
        <input type="file" id="file-1" asp-for="imge1" name="imge1" multiple>
        <label for="file-1" id="file-1-preview">
        </label>
    </div>
    <button id="btn1">upload</button>
</div>

@section Scripts{
    <script>
        $("#file-1").on("change", function (e) {
            if (e.target.files.length == 0) {
                return;
            }else{
                for(var i=0;i<e.target.files.length;i++){
                    //let index = e.target.files.length - 1;
                    let file = e.target.files[i];
                    let url = URL.createObjectURL(file);
                    console.info("url is " + url);
                    var html = "<div><span>" + file.name + "</span><img src='" + url + "' /></div>";
                    $("#file-1-preview").append(html);
                }
            }
        });

        $("#btn1").click(function(){
            var form = new FormData();
            if ($('#file-1').prop('files').length == 0){
                return;
            }else{
                for (var i = 0; i < $('#file-1').prop('files').length; i++){
                    var temp = i+1;
                    alert(temp);
                    form.append("imge" + temp, $('#file-1').prop('files')[i]);
                    form.append("pic" + temp, "file-name-test" + temp);
                }
            }
            $.ajax({
                url: 'https://localhost:7175/test/upload',
                type: 'POST',
                data: form,
                cache: false,
                contentType: false,//stop jquery auto convert form type to default x-www-form-urlencoded
                processData: false,
                success: function (d) {
                    alert(d)
                }
            });
        })
    </script>
}

我的模型,因为我使用一个模型作为控制器输入参数,所以它不会接受更多的图像。但任择议定书提供了这一模式:

代码语言:javascript
复制
public class FileModel
    {
        public string? pic1 { get; set; }

        public IFormFile imge1 { get; set; }

        public string? pic2 { get; set; }

        public IFormFile imge2 { get; set; }
    }

测试结果

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74259237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档