如何在上传后立即在mvc网站上查看图片?

时间:2016-11-02 12:28:47

标签: html .net model-view-controller


我有一个表单I&#39;我正在使用Html.BeginForm()通过控制器上传图像。上传的图像保存正确(我在文件夹中看到),但我无法在网站上看到它。为此,我必须重新加载整个webbrowser 如何在上传后在我的网站上显示图像?网站在不同的视图中显示此图片几次,始终由<img scr="imagePatch"/>显示。新图像只保存与前一个图像相同的名称,替换它。

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点 你可以在表单中使用html文件api。

   $(document).ready(function(){
    // render the image in our view
    function renderImage(input,file) {

      // generate a new FileReader object
      var reader = new FileReader();

      // inject an image with the src url
      reader.onload = function(event) {
        the_url = event.target.result;
        $('.img-preview__').remove();
        $(input).after("<img class='img-preview__' src='" + the_url + "' />")
      }

      // when the file is read it triggers the onload event above.
      reader.readAsDataURL(file);
    }

    // handle input changes  ... you can change selector
    $("#the-file-input").change(function(event) {
        // grab the first image in the FileList object and pass it to the function
        renderImage(event.target,this.files[0]);
    }); 
});

这将很好用。要么你可以让你的图像预览看起来更好。 对于图像预览元素,请使用此css代码

 img.img-preview__ {
    width: 120px;
    border: 3px solid #ddd;
    border-radius: 3px;
    display: inline-block;
}

例如

<h2>Create</h2>
@using (Html.BeginForm("Create", "Image", null, FormMethod.Post, 
                              new { enctype = "multipart/form-data" })) {

    <fieldset>
        <legend>Image</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.ImagePath)
        </div>
        <div class="editor-field">
            <input id="the-file-input" title="Upload a product image" 
                                  type="file" name="file" />
        </div>
        <p><input type="submit" value="Create" /></p>
    </fieldset>
}

我希望这个帮助