实现向服务器上传图片文件、实现不同方式的form表单提交方式

jquery不能异步传输图片文件资源,可以通过form表单提交:

.文件上传
step1:提供一个文件上传的页面
<form action="upload.do" enctype="multipart/form-data" method="post">
注意:
   1)文件上传时,数据的提交方式只能是post提交方式.
   2)form标签中enctype="multipart/form-data"
  默认的传值方式是使用的字符流,enctype="application/x-www-form-urlencoded"
文件上传使用的二进制流,enctype="multipart/form-data"
step2:导入apache提供的两个commons包
commons-io.jar ,commons-fileupload.jar
step3:servlet中处理二进制流(jspDemo01/UploadServlet.java)


代码:

<form action="upload" id="form22" name="www" enctype="multipart/form-data"   method="post" >

  选择文件:<input type="file" name="files" style="position: absolute; border:0 ;opacity:0 ;width:50px;height:50px;"/></br>
  <img src="xxx.jpg" style="width:50px;height:50px;"/></br>

注:点击图片样式button,设置style样式position: absolute; border:0 ;opacity:0;-----图片高宽须和按钮高宽一致 
  备注文字:<input type="text" name="remark"/></br>


  方法一:submit方式提交:<input type="submit" value ="submit上传"  /></br>

方法二:普通按钮提交:<input type="button" οnclick="f2()" value=“普通按钮一”/></br>


方法2.1:普通按钮提交:<input type="button" value="普通按钮二" οnclick="document.getElementById('form22').submit()"/>

注:方法2.1可以是一个超链接等触发点击提交事件,比较灵活


  方法三:检查文件格式提交(实现一次点击确认上传):<input id="id"    οnchange="isCheckingImage(this)"  type="file" name="name"     />

注:方法三综合以上方法,实现选择文件后确认后,即可上传图片,无需点击按钮提交
  </form>

js:

方法二JS:

functionf2(){

document.forms[obj.id].submit();//文件上传document.forms[‘form表单name值’].submit();

}

方法三JS:

function isCheckingImage(obj){
  var v=$("#"+obj.id).val();
  if(v!=''){
  var a=v.lastIndexOf("."); 
  var strr=v.substring(0);//文件名称
  var str=v.substring(a+1);//文件后缀名
  var imgArr = [ "jpg","jpeg","gif","bmp","JPG","JPEG","GIF","BMP","png","PNG"];
  if($.inArray(str, imgArr)=='-1'){
  alert('请选择正确的图片格式');
  var obj = document.getElementById(obj.id).value="" ;  //清空不合格的文件
  }else{
  alert("成功")
  document.forms[obj.id].submit();//文件上传
 
  }
}


servlet代码:

DiskFileItemFactory dff = new DiskFileItemFactory();
ServletFileUpload sf = new ServletFileUpload(dff);
String fileName=null;
String value=null;
try {
//通过解析器解析请求的数据,FileItem对应的input对象
List<FileItem> items = sf.parseRequest(req);
for (FileItem item : items) {
if(item.isFormField()){//为true就为普通文本域
System.out.println("普通文本域");
String name = item.getFieldName();
value = item.getString();
value = new String(value.getBytes("ISO-8859-1"),"utf-8");
System.out.println(
"text-name:"name+",text-value:"+value);
optColorID=value;
}else{//文件域
fileName = item.getName();
//兼容不同浏览器显示的文件名称
fileName = fileName.substring(fileName.lastIndexOf("/")+1);
System.out.println("fileName:"+fileName);
String path = context.getRealPath("photos");
System.out.println(
"photos路径:"+path);
File file = new File(path+File.separator+fileName);
item.write(file);
}
}
} catch (Exception e) {
e.printStackTrace();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
在Java中模拟POST方式提交表单实现图片上传,可以通过使用Java的HttpURLConnection类来实现。以下是一个示例代码: ```java import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.UUID; public class ImageUploader { public static void uploadImage(File imageFile, String uploadUrl) throws IOException { String boundary = UUID.randomUUID().toString(); String lineEnd = "\r\n"; String twoHyphens = "--"; URL url = new URL(uploadUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); OutputStream outputStream = conn.getOutputStream(); // 添加图片文件 FileInputStream inputStream = new FileInputStream(imageFile); outputStream.write((twoHyphens + boundary + lineEnd).getBytes()); outputStream.write(("Content-Disposition:form-data;name=\"file\";filename=\"" + imageFile.getName() + "\"" + lineEnd).getBytes()); outputStream.write(("Content-Type:application/octet-stream" + lineEnd).getBytes()); outputStream.write((lineEnd).getBytes()); byte[] buffer = new byte[1024]; int len = 0; while ((len = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, len); } inputStream.close(); outputStream.write((lineEnd).getBytes()); // 添加表单参数 outputStream.write((twoHyphens + boundary + lineEnd).getBytes()); outputStream.write(("Content-Disposition:form-data;name=\"param1\"" + lineEnd).getBytes()); outputStream.write((lineEnd).getBytes()); outputStream.write(("value1" + lineEnd).getBytes()); outputStream.write((twoHyphens + boundary + twoHyphens + lineEnd).getBytes()); outputStream.flush(); outputStream.close(); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // 上传成功 } else { // 上传失败 } } } ``` 在以上示例代码中,通过HttpURLConnection类来连接上传服务器,设置请求方式为POST,然后通过OutputStream将图片文件表单参数发送给服务器。在发送之前需要设置Content-Type为multipart/form-data,并且在每个参数之间通过boundary分隔。最后通过getResponseCode()方法获取服务器的响应码,判断上传是否成功。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值