0

在 ASP.NET MVC 项目中,我使用 FineUploader jQuery 插件将图像文件上传到 Web 服务器。文件上传部分工作正常,但现在我需要将上传的图像名称与相应的模型详细信息(带有产品图像名称的产品详细信息)一起保存到数据库中。

楷模 :

public class Product
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string Name { get; set; }
    ...
    public virtual IEnumerable<ProductImage> Images { get; set; } 
}

public class ProductImage
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string FileName { get; set; }
}

这是我的 HTML 和 JavaScript 代码,用于上传文件并在上传完成后在页面中显示上传的文件

...
<div id="fine-uploader"></div>
<div id="divImgs">
   <ul>
   </ul>
</div>
....

<script>
    function createUploader() {
        var uploader = new qq.FineUploader({
            element: document.getElementById('fine-uploader'),
            debug: true,
            request: {
                endpoint: '@Url.Action("UploadFile", "Upload")'
            },
            validation: {
                allowedExtensions: ['jpeg', 'jpg', 'gif', 'png']
            },
            deleteFile: {
                enabled: true,
                forceConfirm: true,
                endpoint: '@Url.Action("DeleteFile", "Upload")'
            },
            callbacks: {
                onComplete: function (id, fileName, responseJSON) {
                    if (responseJSON.success) {
                        $('#divImgs ul').append(
                            $('<li>').append(
                                $('<img>').click(
                                    function DeleteFileCall() {
                                        $.ajax({
                                            type: "POST",
                                            url: '@Url.Action("DeleteFile", "Upload")' + '/' + fileName,
                                            contentType: "application/json; charset=utf-8",
                                            dataType: "html"
                                        });
                                        $(this).parent().remove();
                            }).attr('src', responseJSON.uploadedFilePath))
                        );
                    }
                }
            }
        });


        }

        window.onload = createUploader;
</script>

如何使用 javascript 将上传的文件名添加到模型并仅在用户保存模型数据时更新数据库。

4

1 回答 1

0

如果您在控制器中上传 Stream 主体,则可以将文件名作为查询字符串参数传递,并将其映射到函数参数以供以后保存。

来自另一个项目的示例

[WebInvoke(UriTemplate = "/AddImage/{filename}", Method="POST")]
public PrimitiveResponse AddImage(string filename, Stream imageData)
{
    //magic happens here
}
于 2013-07-02T17:38:56.097 回答