【问题标题】:How to copy from value file input to dynamic input file value in java scripts?java - 如何在java脚本中从值文件输入复制到动态输入文件值?
【发布时间】:2020-01-19 07:50:59
【问题描述】:

我有一个输入文件倍数选择文件,在输入文件倍数中选择文件时分到动态输入文件并提交表单到服务器。

  1. 使用 Asp.net MVC
  2. 使用 HttpPostedFileBase f 获取服务器中的所有文件 = 形式[键];
  3. 使用js和jQuery

HTML

外部形式

<input type="file" name="files" id="files" onchange="readFile(this)" multiple accept="image/png, image/jpeg, image/jpg," capture class="file" style="display:none" value="" />

侧面形式

@using (Html.BeginForm("EditImage", "Client", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input type="hidden" id="id_client" name="id_client" value="@ViewBag.Client" />
    <div class="row">
        <div class="col-md-12">
            <div class="dropzone dz-clickable" onclick="document.getElementById('files').click()" id="imgZone">
                <div class="dz-default dz-message"><span>Click Here to choose file</span></div>
            </div>
        </div>
        <div class="col-md-12">
            <br />
            <div class="row">
                <div class="col-md-6"><p class="btn btn-danger btn-lg disabled btn-block" id="delete" onclick="Clear()">Clear</p></div>
                <div class="col-md-6"><input type="button" onclick="Send(this)" name="add" id="add" class="btn btn-success btn-lg disabled btn-block" value="Submit" /></div>
            </div>
        </div>
    </div>
}

设置值、创建和预览图像的jQuery代码

function readFile(input) {
    //CheckFileUpload(input.files.length)
    if (input.files && input.files[0]) {
        var img, inputID = 0;
        for (var i = 0; i < input.files.length; i++) {
            var reader = new FileReader();
            reader.onload = (function (f) {
                return function (e) {
                    console.table(f);
                    img = '<div class="dz-preview dz-processing dz-error dz-complete dz-image-preview">';
                    img += '    <input type="file" id="file_' + inputID + '" name="file_' + inputID + '" class="d-none" value="' + f + '" style="display:none" />';
                    img += '    <div class="dz-image shadow"><img data-dz-thumbnail="" class="w-100 h-100" alt="banner.jpg" src="' + e.target.result + '"></div>';
                    img += '    <div class="dz-details">';
                    img += '        <div class="dz-size"><span data-dz-size="">' + formatBytes(f.size) + '</span></div>';
                    img += '        <div class="dz-filename"><span data-dz-name="">' + f.type + '</span></div>';
                    img += '        <div class="mt-1 btn btn-danger btn-delete"><i class="fas fa-trash"></i></div>';
                    img += '    </div>';
                    img += '</div>';
                    $('#imgZone').append(img);
                    inputID++;
                }

            })(input.files[i]);
            reader.readAsDataURL(input.files[i]);
        }
    }
}

C# 代码 { 在服务器站点中(用于获取文件的服务器代码)}

public ActionResult EditImage(long? id_client)
{
    //For testing
    //var filesRequest = Request.Files;
    //HttpPostedFileBase file = filesRequest["file_1"];

    var files = new HttpPostedFile[Request.Files.Count];
    Request.Files.CopyTo(files, 0);
    if (files == null)
        return RedirectToAction("Detail", new { id = id_client });
    if (files[0] != null)
        FileUpload(id_client, "~\\Documents\\Client\\boards\\", files);
    return RedirectToAction("ViewImage", new { id = id_client, camBack = false });
}

当提交表单文件不为空但文件名为空时

File output 为什么文件名是空的?

Files output 提交表单时所有输入POST但内容长度等于0且文件名为空

**总结我的报价**

  1. 如何通过我的方式在服务器站点中文件(我的代码)
  2. 我不知道服务器站点客户端站点有问题!!!
  3. 没问题,如果有任何方式,所有更改代码为新方式

【问题讨论】:

    标签: javascript c# asp.net-mvc jquery-file-upload jquery-clone


    【解决方案1】:

    我尝试寻找新的方式

    保持隐藏输入 Base 64 图像流然后传递到服务器中的服务器转换为 图像类型

    jQuery 和 JS

    function readFile(input) {
        CheckFileUpload(input.files.length)
        if (input.files && input.files[0]) {
            var img, inputID = 0;
            for (var i = 0; i < input.files.length; i++) {
                var reader = new FileReader();
                reader.onload = (function (f) {
                    return function (e) {
                        //<input type="file" id="file_' + inputID + '" name="file_' + inputID + '" class="d-none" value="' + f + '" style="display:none" />';
                        var fileInput = $('<input/>')
                            .attr('type', "hidden")
                            .attr('name', 'file_' + inputID + '')
                            .attr('id', 'file_' + inputID + '')
                            .attr('value', e.target.result);
                        $('#imgZone').append(fileInput);
                        inputID++;
                    }
    
                })(input.files[i]);
                reader.readAsDataURL(input.files[i]);
            }
        }
    

    C#

    var filesRequest = Request.Form;
        string file = filesRequest["file_1"];
        byte[] bytes = Convert.FromBase64String(file); // Replace file here
        System.Drawing.Image image;
        using (MemoryStream ms = new MemoryStream(bytes))
        {
            image = System.Drawing.Image.FromStream(ms);
        }
    

    代码问题:Must base 64 string substring or replace data:image/jpeg;base64,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-15
      • 2021-07-25
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2011-09-09
      • 2015-01-25
      相关资源
      最近更新 更多