精华内容
下载资源
问答
  • java web前端上传文件到后台常用三种方式,包括from表单提交、ajax提交、FormData对象提交,框架采用Spring Boot。
  • 今天小编就为大家分享一篇Django后台获取前端post上传文件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • html:JS:$('input[type=file]').on("change", function () {var files = this.files...var FileName = files.name;var FileSize = files.size;var reader = new FileReader();reader.onload = function (e) {$.ajax...

    html:

    JS:

    $('input[type=file]').on("change", function () {

    var files = this.files[0];

    var FileName = files.name;

    var FileSize = files.size;

    var reader = new FileReader();

    reader.onload = function (e) {

    $.ajax({

    url: "Audit.aspx/SaveFileBinary",

    type: "post",

    dataType: "json",

    contentType: "application/json",

    async: false,

    data: "{\"data\":{\"AuditID\":\"" + params["id"] + "\",\"FileData\":\"" + reader.result + "\",\"FileName\":\"" + FileName + "\",\"FileSize\":\"" + FileSize + "\"}}",

    success: function (result) {

    var res = $.parseJSON(result.d);

    setDataSource(res);    //刷新数据源

    },

    error: function (xhr, msg, e) {

    alert(jQuery.parseJSON(xhr.responseText).Message);

    }

    })

    }

    reader.readAsDataURL(this.files[0])

    });

    后台:

    string FileData= data["FileData"].ToString();

    string strBase64 = FileData.Substring(FileData.IndexOf(",") + 1);

    byte[] byteArray = Convert.FromBase64String(strBase64);

    byteArray直接存入数据库就行了。

    前台弄个列表,直接放个链接下载,很方便。

    展开全文
  • 前端上传文件的方式

    万次阅读 2019-03-19 23:22:53
    web上传文件方式介绍 在web浏览器上传文件一般有以下几种方式: form表单上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe上传文件 其中form提交数据之后会整个刷新页面; js通过ajax上传文件...

    web上传文件方式介绍

    在web浏览器上传文件一般有以下几种方式:
    form表单上传文件
    原生js实现ajax上传文件
    jquery实现ajax上传文件
    form+iframe上传文件
    其中form提交数据之后会整个刷新页面;
    js通过ajax上传文件虽然不会刷新整个页面,但是他们都是通过使用formdata对象实现的,formdata对象在老版本的浏览器中并不支持;
    为了兼容老版本浏览器,使用iframe方式提交;
    下面几节就分别就这几种方式实现上传文件来举例说明。

    1. form上传文件

    这是最原始的一种方式,最开始学习web的时候就是使用这种方式提交。
    注意:在form表单中如果要上传文件,一定要设置这个参数: enctype=”multipart/form-data”表示封装数据类型,把数据分成一个一个小段传输。

    html代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .show-img{
                display: inline-block;
                width: 200px;
                height:200px;
            }
        </style>
    </head>
    <body>
        <h1>form表单上传文件</h1><hr>
        <form action="/test/" method="POST" enctype="multipart/form-data">
            <p>名称:<input type="text" name="user"></p>
            <p>文件:<input type="file" name="testfile"></p>
            <p><input type="submit" value="提交"></p>
        </form>
        {% for i in imglist %}
            <img class="show-img" src="/{{ i.0 }}">
        {% endfor %}
    </body>
    </html>
    

    在后端要注意上传过来的文件是通过request.FILES.get()方法接收的。
    后端代码:

    def test(req):
        if req.method=="GET":
            imglist=models.Img.objects.all().values_list("img_path")
            return render(req,"test.html",{"imglist":imglist})
        elif req.method=="POST":
            user=req.POST.get("user")
            file=req.FILES.get("testfile")
            path=os.path.join("static","imgs",file.name)
            with open(path,"wb") as f:
                for chunk in file.chunks():
                    f.write(chunk)
            print(user,file.name,file.size)
            models.Img.objects.create(img_path=path)
            return redirect("/test/")
    

    2. 原生js实现ajax上传文件

    js源码:

    document.getElementById("js_post").onclick=function(){
        var xml=new XMLHttpRequest();
        var data=new FormData; //创建formdata对象
        data.append("testfile",document.getElementById("file_upload").files[0]);//找到对象之后的file[0]对应的就是文件对象
        xml.open("POST","/test/",true);
        xml.onreadystatechange=function(){
            if(xml.readyState==4 && xml.status==200){  //判断状态到4了并且返回状态码是200时才做操作
                var rsp_data=JSON.parse(xml.responseText);  //反序列化
                if (rsp_data.state){
                    var url="/"+rsp_data.data;  //拼接路径
                    var obj=document.createElement("img");  //创建标签
                    obj.className="show-img";  //给标签加样式
                    obj.src=url;  //给标签加url
                    document.getElementById("imgs").appendChild(obj);
                }
            }
        };
        xml.send(data)
    }
    

    html源码:

    <hr><h1>ajax上传文件</h1><hr>
    <p>文件:<input id="file_upload" type="file" name="testfile"></p>
    <p><button id="js_post">原生js提交</button>  <button id="jquery_post">jquery提交</button></p>
    <div id="imgs">
        {% for i in imglist %}
            <img class="show-img" src="/{{ i.0 }}">
        {% endfor %}
    </div>
    

    后端源码:

    def test(req):
        if req.method=="GET":
            imglist=models.Img.objects.all().values_list("img_path")
            return render(req,"test.html",{"imglist":imglist})
        elif req.method=="POST":
            user=req.POST.get("user",None)
            file=req.FILES.get("testfile")
            path=os.path.join("static","imgs",file.name)
            with open(path,"wb") as f:
                for chunk in file.chunks():
                    f.write(chunk)
            print(user,file.name,file.size)
            models.Img.objects.create(img_path=path)
            # return redirect("/test/")
            msg={"code":200,"state":True,"data":path}
            return HttpResponse(json.dumps(msg))
    

    注意:FormData对象在添加文件对象的时候并不是把标签直接给append进去,而是找到标签之后.file(0)才是文件对象

    3. jquery实现ajax上传文件

    这里的html代码和后端代码相对上面没有改变,这里就不列出来了。
    jquery代码:

    $("#jquery_post").on("click",function(){
                var data=new FormData;
                data.append("testfile",document.getElementById("file_upload").files[0]);
                $.ajax({
                    url:"/test/",
                    type:"POST",
                    dataType:"JSON",
                    data:data,
                    contentType: false,
                    processData: false,
                    success:function(rst){
                        if(rst.state){
                            var url="/"+rst.data;
                            $('<img class="show-img" src="'+url+'">').appendTo("#imgs")
                        }
                    }
                })
            })
    

    注意:jquery的ajax会自动把我们的数据转换成字符串,不想转换时需要在ajax里面写入:contentType: false,processData: false,

    4. form+iframe构造请求上传文件

    html代码:

    <hr><h1>form+iframe上传文件</h1><hr>
        <p><iframe id="uploadfile" name="uploadfile" style="display: none"></iframe></p>  <!--注意这里的name要和form中的target一致-->
        <form target="uploadfile" action="/test/" method="POST" enctype="multipart/form-data">
            <p>名称:<input type="text" name="user"></p>
            <p>文件:<input type="file" name="testfile"></p>
            <p><input type="submit" value="提交"></p>
        </form>
        <div id="imgs">
            {% for i in imglist %}
                <img class="show-img" src="/{{ i.0 }}">
            {% endfor %}
        </div>
    

    注意:这里的iframe的name的值一定要和form的target的值一样,这样才能实现绑定

    js代码:

    $("#uploadfile").on("load",function(){  //iframe里面有个方法是onload,当上传数据成功之后服务器返回数据时才会触发该事件
                var rst=JSON.parse(this.contentDocument.body.textContent);//拿到iframe里面的内容需要通过contentDocument才能拿到里面的dom对象
                if (rst.state){
                    var url="/"+rst.data;
                            $('<img class="show-img" src="'+url+'">').appendTo("#imgs")
                }
            })
    

    注意:拿到iframe里面的内容需要通过contentDocument才能拿到里面的dom对象
    经过实际检测,当鼠标点击提交速度比较快时,js通过ajax提交数据没有问题,但是iframe就无法提交所有数据。。。
    原因是ajax是异步加载的,而iframe更像是通过浏览器打开了一个新标签,等待服务端传输回来的数据。所以,当提交速度过快时无法达到相应的效果。
    使用iframe的唯一一个好处目前来看也就是兼容老版本的浏览器罢了。。。
    随着时间的流逝,这种方式终将被淘汰。

    参考:https://www.cnblogs.com/huxianglin/p/6175678.html

    展开全文
  • 前端上传文件到后端的FormData实现

    千次阅读 2020-11-20 10:10:06
    将本地数据(.xlsx、.docx等文件上传或导入数据库,有时候需要使用FormData 对象。FormData对象,可以把所有表单元素的name与value组成一个queryString,提交到后台。 一、创建对象: 创建一个FormData对象实例 1、...

    将本地数据(.xlsx、.docx等文件)上传或导入数据库,有时候需要使用FormData 对象。FormData对象,可以把所有表单元素的name与value组成一个queryString,提交到后台。
    一、创建对象:
    创建一个FormData对象实例
    1、常用的创建

    let formData = new FormData();
    

    2、vue中的创建

    let formData = new window.FormData();
    

    3、在表单的基础上创建

    <form id="fromCont" action="" method="post">
        <input type="text" name="content">
        <input type="submit" value="提交">
    </form>
    //根据id获取表单
      var form = $("#fromCont");
    //初始化实例
    var formData = new FormData(form);
    // 获取content内容
    var content= formData.get("content"); 
    //通过append() 方法向对象中添加content键值对
    formData.append("content",content);
    

    二、操作方法:
    formData里面存储的数据形式,一对key/value组成一条数据,key是唯一的,一个key可能对应多个value。如果是使用表单初始化,每一个表单字段对应一条数据,它们的HTML name属性即为key值,它们value属性对应value值。

    1、获取值

    //通过get(key)/getAll(key)来获取对应的value
    formData.get("value");  
    

    2、添加数据

    //通过append(key, value)来添加数据,如果指定的key不存在则会新增一条数据,如果key存在,则添加到数据的末尾
    formData.append("key1", "value1");
    formData.append("key2", "value2");
    formData.append("key2", "value3");
    //获取key1
    formData.get("key1");  //返回 "value1"
    formData.get("key2");  //返回 "value2"
    formData.getAll("key2");  //返回 ['value2','value3']
    

    3、设置、修改数据

    //通过set(key, value)来设置修改数据,如果指定的key不存在则会新增一条,如果存在,则会修改对应的value值。
    formData.append("key1", "value1");
    formData.set("key1", "value2");
    //获取key1
    formData.get("key1");  //返回 "value2"
    

    4、删除数据

    //通过delete(key),来删除数据
    formData.append("key1", "value1");
    formData.delete("k1");
    //获取key1
    formData.get("key1");  //返回 []
    

    5、判断数据的存在

    //通过has(key)来判断是否对应的key值,如果有对应的key值就返回true,如果没有则返回false
    formData.append("key1", "value1");
    formData.has("key1"); // true
    formData.has("key2"); // false
    

    三、vue上传文件

      <template>
        </div>
          <div class="fileItem">
            //上传文件的input,type设置为file
            <input type="file" ref="fileId" @change="getFile">
          </div>
      </div>
    </template>
    
    <script>
    export default {
    data(){
       return:{
        //赋值input中file内容
        xlsxFile:''
        }
       },
      methods:{
       getFile(){
         //获取file内容
        let files = this.$refs.fileId.files[0];
         this.xlsxFile = files;
       },
        //上传文件
        importRow() {
          let that = this;
          if (that.xlsxFile == "") {
            that.$message.error('请先添加文件');
            return;
          }
        // vue 中使用 window.FormData(),否则会报 'FormData isn't definded'
        //创建一个FormData对象,然后通过append() 方法向对象中添加键值对
          let formData = new window.FormData(); 
          formData.append("file", that.xlsxFile);
         // that.importUrl 上传的接口url
          that.$axios.post(
              that.importUrl,
              formData
            ).then(function(response) {
              that.$message.success('上传成功');
            }) .catch(function(error) {
              that.$message.error(res.data.msg);
            });
    }
    
    }
    </script>
    

    四、HTML中上传文件

    //HTML中
    <div>
    <input name="file" type="file" id="fileCont" value="">
    </div>
    //JS中,这里引入了Jquery
           $('#fileCont').on('change',function(){
           var fileObj = $(this).files[0]; 
           if (typeof (fileObj) == "undefined" || fileObj.size <= 0) {
            //这里是我自己定义的弹框方法
            popup({type:'tip',bg:false,msg:"请选择件",delay:1000,clickDomCancel:true});
            return;
             }
            var formFile = new FormData();
             //加入文件对象,向接口传入两个参数file,id
            formFile.append("file", fileObj); 
            formFile.append("id", id); 
             var data = formFile;
              $.ajax({
                url:urlCur,
                data: data,
                 type: "POST",
                 dataType: "json",
                 //上传文件无需缓存
                 cache: false,
                 //用于对data参数进行序列化处理 这里必须false
                  processData: false,
                 //必须
                 contentType: false, 
                 success: function (res) {
                   if(res.code === 200){
                  popup({type:'success',bg:false,msg:"上传成功",delay:1000,clickDomCancel:true});
                  }else{
                  popup({type:'error',bg:false,msg:res.msg,delay:1000,clickDomCancel:true});
                    }
                 },
             }) 
      })
    

    上传文件需要前后端的小伙伴儿配合,一起完成,第一次进行文件上传时,遇到了一些麻烦,比如前端传值的方法不对、后台接口报500,但是只要有耐心,肯钻研,就一定会成功的!
    路漫漫其修远兮,吾将上下而求索。

    作者:童话_xxv
    链接:https://www.jianshu.com/p/51188659d778
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • 图片和文件上传前端实现,包含:html、js、css文件等。
  • 背景:在改造caffe自带demo时,增加了一个更新模型的...1、使用Tornado上传文件 在海洋生物识别的过程中有一个上传本地图片进行检测的功能,对应这个功能进行了修改,但是出现以下错误,基本意思是Tornado默认上传...

    背景:在改造caffe自带demo时,增加了一个更新模型的功能,需要将用户训练好的caffemodel上传到服务器,并替换到已经存在的caffemodel文件,重新加载上传的caffemodel文件并运行。最终改动结果页面如下:

    1、使用Tornado上传文件

    在海洋生物识别的过程中有一个上传本地图片进行检测的功能,对应这个功能进行了修改,但是出现以下错误,基本意思是Tornado默认上传大小为100MB 如果超过该大小就会出现以下错误。这里可以通过修改max_buffer_size属性来改变默认的上传大小,但是这里会有风险,因为Tornado是通过单字符串读入内存中的。

    'Content-Length too' long when uploading file using Tornado

    错误解释:

    Tornado has a configurable limit on upload size (defaulting to 10MB). You can increase the limit by 
    passing max_buffer_size to the HTTPServer constructor (or Application.listen). However, since 
    Tornado (version 3.1) reads the entire upload body into a single contiguous string in memory, it's 
    dangerous to make the limit too high.

    不过这里如果小于100MB 的小文件还是推荐使用的,代码可以参考caffedemo的,关键代码如下

    前端

     <script type="text/javascript">
          $(document).ready(
            function(){
              $('#classifyfile').attr('disabled',true);
              $('#imagefile').change(
                function(){
                  if ($(this).val()){
                    $('#formupload').submit();
                  }
                }
              );
            }
          );
        </script>
    <body>
     <form id="formupload" class="form-inline" role="form" action="classify_upload" method="post" enctype="multipart/form-data">
            <div class="form-group">
              <label for="imagefile">检测本地图像:</label>
              <input type="file" name="imagefile" id="imagefile">
            </div>
            <!--<input type="submit" class="btn btn-primary" value="Classify File" id="classifyfile"></input>-->
          </form>
    </body>

    Python后端代码:

    @app.route('/model_upload', methods=['POST'])
    def model_upload():
        try:
            # We will save the file to disk for possible data collection.
    
            model_file = flask.request.files['model_file']
    
            filename_ = werkzeug.secure_filename(model_file.filename)
            filename = os.path.join(UPLOAD_MODEL_FOLDER, filename_)
            model_file.save(filename)
            #filename = filename
            #imagefile.save(filename)
            logging.info('Saving to %s.', filename)
            #image = exifutil.open_oriented_im(filename)
            return flask.render_template(
                'right_update.html', has_result=True,
                result=(True, '上传成功')
            )
            #start_from_terminal(app)
        except Exception as err:
            logging.info('Uploaded model open error: %s', err)
            return flask.render_template(
                'right_update.html', has_result=True,
                result=(False, 'Cannot open uploaded caffemodel.')
            )

    2、使用分片上传文件

    感谢博主提供的代码,十分有帮助。请参考 大文件分片传输

    这里为了展示效果粘贴一下效果图

    上传成功

    上传错误

    3、更换pip下载源

    由于在使用pip install 下载一下包时候由于网络原因总是超时,这里解决有三种方法,分别是:

    (1)更换下载源

    (2)fq

    (3)修改默认超时时间

    这里参考了替换pip下载源

    写入内容为:

    [global]
    timeout = 6000
    index-url = https://pypi.douban.com/simple
    trusted-host = pypi.douban.com

     

    展开全文
  • 前端上传文件到服务器端

    万次阅读 2018-02-06 17:43:54
    今天公司要让上传文件到服务器,尽管网上有很多插件,而且各种UI组件库,像iview,eleUI也都替我们封装好了,根本不用我们操心。但是由于好奇心重,于是就想研究一下,经过一下午的网上查询,得出一点结论,分享一下。...
  • java web前端上传文件到后台常用的几种方式

    万次阅读 多人点赞 2018-06-30 21:42:07
    一个很简单的功能,当我做到需要上传图片到后台的时候,突然感觉对上传文件的思路很乱,不知该使用什么方式来实现。所以今天小编我来总结上传文件的几种方式,屡屡自己的思路。  二、常用的几种方式  1、使用...
  • 前端上传文件使用FormData给后端传参

    千次阅读 2020-12-25 21:29:11
    // 如果上传多个文件,是数组fileList的话,循环append for(var i = 0; i ; i ++) { formdata.append('files', fileList[i].originFileObj) // 这里切记这个originFileObj } // 其他参数 formdata.append('...
  • 前端上传文件,筛选文件格式

    千次阅读 2016-05-29 18:02:49
    前端上传文件,筛选文件格式 1.基本使用它格式  在上传文件的时候,需要限制指定的文件类型。 如:  accept="image/*" />  accept表示可以上传文件类型,image表示图片,*表示所有支持的格式。 ,application/...
  • 前端上传文件修改文件名

    千次阅读 2018-12-12 14:26:12
    在change事件中写 //第二个参数必须要加new Date().getTime()才能实时读写 var file = new File([files[0]], new Date().getTime() + "_pic.jpg", { type: files[0].type });
  • 主要介绍了vue纯前端实现腾讯cos文件上传功能的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • web项目前端上传文件给后端

    千次阅读 2020-03-10 12:06:11
    1、前端 给input的type为file,加上name form的enctype=”multipart/form-data” 请求方式为post 2、后端 后端@RequestParam(value = “file”, required = false) MultipartFile file接受...
  • 我有一个表格,表里的一个input要上传文件,请问我这个做法对吗? 1.创建一个input type=“file”然后绑定(click)事件 2.在click事件的function中上传图片到后端API 3.后端API返回文件的URL 4.把URL显示在input中, ...
  • 使用前端插件上传文件到ftp服务器,上传配置灵活,通过配置文件即可配置文件类型大小,还有ftp服务器连接信息
  • 前端上传文件给后端

    千次阅读 2019-02-24 14:18:19
    form的enctype=”multipart/form-data” 这个是上传文件必须的 applicationContext.xml中 &amp;amp;amp;amp;lt;bean id=”multipartResolver” class=”org.springframework.web.multipart.commons....
  • 文件上传,包括前端和后端的核心代码,IE8无法获取文件真实路径,可以通过该方法来实现文件上传,使用的是FormData传递文件数据。
  • 前端上传文件动态控制进度条动画

    千次阅读 2019-04-19 18:18:48
    1.引用bootstrap和jquery文件 <link href="css/bootstrap.min.css?v=3.3.6" rel="stylesheet"> <script src="js/jquery.min.js?v=2.1.4"></script> <script src="js/bootstrap.min.js?v=3.3.6....
  • 前端上传文件到腾讯云(对象存储)

    万次阅读 多人点赞 2018-04-28 15:59:17
    好吧,没写之前简单的说一下为什么要写,我还是怀着...我为什么要将文件上传到服务器,很简单,文件太大,公司的带宽不行,上传一个文件需要的时间太长,导致的是用户体验太差,那么怎么解决这个问题,很有效的解...
  • 由于Tomcat对于文件上传的请求做了处理,所有直接getParameter是获取不到的。由于我用的是servlet3.0,所以加了一个注解就可以了。贴代码:package servlet; import java.io.IOException; import java.io....
  • javaWeb接收前端上传文件或图片

    千次阅读 2019-04-26 16:30:06
    1.接收前端上传文件, /** * 接收多文件 */ @RequestMapping("/upload") public R uploadFile(@RequestParam Map<String, Object> params, HttpServletRequest request) { // 复杂类型的r...
  • 文件上传部件,有多个文件选择,拖放支持,进度条,验证和预览图像,音频和视频jQuery。支持跨域、分块和可恢复的文件上传。任何服务器端平台,支持标准的HTML表单上传文件
  • post请求理论上对参数的大小没有限制,但是tomcat服务器有限制,本文不介绍更改tomcat配置文件的方式,使用另一种方式更改spring-boot配置文件的方式解决。 spring-boot的application.yml可配置如下: 如果配置文件...
  • } try { // 上传文件,核心功能 file.transferTo(file1); } catch (IOException e) { e.printStackTrace(); } } 几个注意点 接下来就是写service层和dao层,很简单,普通的增删改查(略) 下载 ${pageContext....
  • 一个bootstrap编写的全套模板,包含增删改查,文件上传,角色权限管理的界面,还有其他图形化界面,大气好用
  • 现象:前端访问后台上传文件接口没有任何返回值,只有"{}"。后端在上传文件接口处打断点也不进来,后来才发现后端spring-mvc没有配置多媒体解析器,导致MultipartFile类型参数接收不到。 &lt;!--配置...
  • 后端自测上传文件成功,但是前端总是报500

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 151,474
精华内容 60,589
关键字:

前端上传文件

友情链接: StatusChartDemo.rar