input file上传图片后预览:

  1. //对file上传的图片做处理
  2. function getObjectURL(file) {
  3. var url = null ;
  4. // 下面函数执行的效果是一样的,只是需要针对不同的浏览器执行不同的 js 函数而已
  5. if (window.createObjectURL!=undefined) { // basic
  6. url = window.createObjectURL(file) ;
  7. } else if (window.URL!=undefined) { // mozilla(firefox)
  8. url = window.URL.createObjectURL(file) ;
  9. } else if (window.webkitURL!=undefined) { // webkit or chrome
  10. url = window.webkitURL.createObjectURL(file) ;
  11. }
  12. return url ;
  13. };
  14. //////////////////////////////////////////////////////////////
  15. $("#files").change( function(e){
  16. var f=document.getElementById('files').files[0];
  17. var newsrc=getObjectURL(f);
  18. $('#expertImg').attr('src',newsrc);
  19. })

formData下数据,方便file的文件请求ajax;

  1. form.on('submit(editExpert)', function(data) {
  2. var formData = new FormData();
  3. formData.append("TOKEN",token);
  4. formData.append("EXPERTNAME",data.field.expertName);
  5. formData.append("ID",data.field.id);
  6. formData.append("TYPE",data.field.type);
  7. formData.append("INTRODUCE",data.field.introDuce);
  8. formData.append("FANSNUM",data.field.fansNum);
  9. formData.append("HITRATE",data.field.hitrate);
  10. formData.append("PROFITRATE",data.field.profitrate);
  11. var fileInput = document.querySelector('#files');
  12. var files = fileInput.files;
  13. if(files.length > 0){
  14. [].slice.call(files).forEach(function(value,index){
  15. formData.append('file',value,value.name); //遍历添加上传的图片的数据
  16. })
  17. }
  18. getEditExpert(formData);
  19. return false;
  20. })
  21. function getEditExpertMsg(form_data) {
  22. $.ajax({
  23. url: apqurl + '/expert/updateExpert',
  24. type: 'post',
  25. data:form_data,
  26. contextType: 'multipart/form-data; charset=utf-8',
  27. async: false,
  28. processData:false, //jQuery不要去处理发送的数据
  29. contentType:false, //jQuery不要去设置Content-Type请求头
  30. success: function(res) {
  31. console.log(res);
  32. if(res.code == 0) {
  33. layer.msg(res.msg, {
  34. icon: 1
  35. });
  36. }else {
  37. layer.msg(res.msg, {
  38. icon: 2
  39. });
  40. }
  41. }
  42. })
  43. }

image.png

image.png

jQuery_ajax报错:Uncaught TypeError: Illegal invocation

image.png
报错的解决办法:设置processData与contentType参数为false

  1. $.ajax({
  2. url: apqurl + '/expert/updateExpert',
  3. type: 'post',
  4. data:form_data,
  5. contextType: 'multipart/form-data; charset=utf-8',
  6. async: false,
  7. processData:false, // jQuery不要去处理发送的数据
  8. contentType:false, // jQuery不要去设置Content-Type请求头
  9. success:function(data){},
  10. error:function(err){}
  11. })

注意:

查看formData对象数据需要用get(‘名字’)或者getAll()方法**,直接打印出来是{}的
form表单提交对于file文件类型的input框并不适用
file文件只能上传不能赋值或预览图片
更改input file 的按钮样式可参考如下标签写法(file类型的标签隐藏,其它标签代替):
image.png**

以上参考:https://www.cnblogs.com/shapeY/p/7903414.html