JavaScript、jquery实现上传图片(图片存到服务器,路径存到数据库字段中)一

 首先第一步就是界面。样式什么的就不设置了,先实现功能就行。
<form id="form2" method="post" enctype="multipart/form-data">

    <input type="file" id="imageUpLoad" name="imageUpLoad" class="form-control required" style="float: left; width: 200px;">
    <input type="button" value="点击上传" onclick="UpLoad()"   class="btn  btn-primary">
</form>
先选择图片进行上传,这里使用from 中的type="file"就可以选择图片,然后定义一个上传按钮,按钮中给他一个onclick事件。
 function UpLoad() {
        //如果有其他的值,判断下是否为空

        var keyValue = $("#gridList").jqGridRowValue().Id;

        form2.action = "/List/AddEvidence?keyValue=" + keyValue;
        form2.submit();
    }

这个是跳转到了控制器的AddEvidence方法中,参数是keyValue 。

后台控制器的写法:

[HttpPost]
        //
        public ActionResult AddEvidence(HttpPostedFileBase imageUpLoad, string keyValue)
        {
            string fileName = imageUpLoad.FileName;
            //转换只取得文件名,去掉路径。
            if (fileName.LastIndexOf("\\") > -1)
            {
                fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1);
            }
            string type = fileName.Substring(fileName.LastIndexOf(".") + 1);//得到加载文件的扩展名
            if (type == "jpg" || type == "bmp" || type == "gif" || type == "png")
            {
                //重命名,方便同一管理
                fileName = DateTime.Now.ToString("yyyyMMddhhmmss") + "-" + Path.GetFileName(imageUpLoad.FileName);
                string uppath = Server.MapPath("/Content/IssueImages/") + fileName;
                //保存到相对路径下。
                imageUpLoad.SaveAs(uppath);
                //以下代码是将 路径保存到数据库。
                string ImageUrl = "/Content/IssueImages/" + fileName;
                //在数据库中查出来是否已经上传了图片
                var data = this.CreateService<IIssueListAppService>().GetIssueListById(keyValue).First();
                if (data.ImageUrl == null)
                {
                //如果没有上传,那就存进去
                    UpdateIssueRecordsInput input = new UpdateIssueRecordsInput();
                    input.Id = keyValue;
                    input.ImageUrl = ImageUrl;

                    this.CreateService<IIssueListAppService>().UpdateImageUrl(input);
                    return Success("上传图片成功!");
                }
                else if (data.ImageUrl2 == null)
                {
                    UpdateIssueRecordsInput input = new UpdateIssueRecordsInput();
                    input.Id = keyValue;
                    input.ImageUrl2 = ImageUrl;

                    this.CreateService<IIssueListAppService>().UpdateImageUrl2(input);
                    return Success("上传图片成功!");
                }
                else if (data.ImageUrl3 == null)
                {
                    UpdateIssueRecordsInput input = new UpdateIssueRecordsInput();
                    input.Id = keyValue;
                    input.ImageUrl3 = ImageUrl;

                    this.CreateService<IIssueListAppService>().UpdateImageUrl3(input);
                    return Success("上传图片成功!");
                }
                else
                {
                    return Error("最多上传三张图片");
                }
            }
            else
            {
                return Error("文件格式不正确");
            }
        }

这时候已经将图片上传到服务器,路径存到数据库了,下一篇将介绍显示图片并且实现删除。

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用HTML5的FormData对象来实现多文件上传,然后使用Ajax将数据发送到服务器。在服务器端,您可以使用Java的Servlet来处理上传的文件,并将文件路径保存数据库。以下是一个简单的示例代码: HTML代码: ```html <form id="myForm" enctype="multipart/form-data"> <input type="file" name="file1"> <input type="file" name="file2"> <input type="button" value="Upload" onclick="uploadFiles()"> </form> ``` JavaScript代码: ```javascript function uploadFiles() { var form = document.getElementById("myForm"); var formData = new FormData(form); var xhr = new XMLHttpRequest(); xhr.open("POST", "uploadServlet", true); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { alert(xhr.responseText); } }; xhr.send(formData); } ``` Java代码: ```java @WebServlet("/uploadServlet") @MultipartConfig public class UploadServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String file1Path = saveFile(request.getPart("file1")); String file2Path = saveFile(request.getPart("file2")); // 将文件路径保存数据库 // ... response.getWriter().write("Files uploaded successfully!"); } private String saveFile(Part part) throws IOException { String fileName = getFileName(part); String filePath = "C:/uploads/" + fileName; part.write(filePath); return filePath; } private String getFileName(Part part) { String contentDisposition = part.getHeader("content-disposition"); String[] tokens = contentDisposition.split(";"); for (String token : tokens) { if (token.trim().startsWith("filename")) { return token.substring(token.indexOf("=") + 2, token.length() - 1); } } return ""; } } ``` 请注意,此示例代码仅供参考,您需要根据自己的需求进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值