精华内容
下载资源
问答
  • 通常我们与第三方交互使用的是 json,但偶尔也会遇到要求使用表单方式来提交数据,故今天我们就一起来学习下如何在 Go 发送表单请求。准备工作首先我们有这样一段测试代码来接收 POST 请求,并返回其接收到的字段...

    fbae883eb5030f836b6d3b4f8ee10e08.png

    通常我们与第三方交互使用的是 json,但偶尔也会遇到要求使用表单方式来提交数据,故今天我们就一起来学习下如何在 Go 中发送表单请求。

    准备工作

    首先我们有这样一段测试代码来接收 POST 请求,并返回其接收到的字段信息。

    package main
    
    import (
    	"fmt"
    	"log"
    	"net/http"
    )
    
    func urlencodedHandler(w http.ResponseWriter, r *http.Request) {
    	err := r.ParseForm()
    	if err != nil {
    		log.Printf("r.ParseForm(): %v", err)
    		return
    	}
    
    	result := ""
    	for k, v := range r.Form {
    		result += fmt.Sprintf("%s:%vn", k, v)
    	}
    
    	fmt.Fprintf(w, result)
    }
    
    func multipartHandler(w http.ResponseWriter, r *http.Request) {
    	err := r.ParseMultipartForm(4 * 1024 * 1024)
    	if err != nil {
    		log.Printf("r.ParseForm(): %v", err)
    		return
    	}
    
    	result := ""
    	for k, v := range r.MultipartForm.Value {
    		result += fmt.Sprintf("%s:%vn", k, v)
    	}
    
    	for k, v := range r.MultipartForm.File {
    		result += fmt.Sprintf("%s:%vn", k, v)
    	}
    
    	fmt.Fprintf(w, result)
    }
    
    func main() {
    	http.HandleFunc("/urlencoded", urlencodedHandler)
    	http.HandleFunc("/multipart", multipartHandler)
    
    	log.Fatal(http.ListenAndServe(":8080", nil))
    }

    发送 urlencoded 请求

    urlencoded 主要用于纯文本请求,代码如下:

    package main
    
    import (
    	"fmt"
    	"io/ioutil"
    	"net/http"
    	"net/url"
    	"strings"
    )
    
    func main() {
    	payload := url.Values{}
    	payload.Set("foo", "a")
    	payload.Add("foo", "b")
    	payload.Set("foo2", "c")
    
    	req, err := http.NewRequest(http.MethodPost,
                                "http://localhost:8080/urlencoded",
                                strings.NewReader(payload.Encode()))
    	if err != nil {
    		return
    	}
    
    	req.Header.Add("Content-Type",
                      "application/x-www-form-urlencoded; param=value")
    
    	resp, err := http.DefaultClient.Do(req)
    	if err != nil {
    		return
    	}
    
    	defer resp.Body.Close()
    
    	data, _ := ioutil.ReadAll(resp.Body)
    
    	fmt.Println(string(data))
    }

    运行 go run urlencoded.go 输出结果为:

    foo2:[c]
    foo:[a b]

    发送 multipart 请求

    multipart 主要用于发送文件上传的请求,代码如下:

    package main
    
    import (
    	"bytes"
    	"fmt"
    	"io/ioutil"
    	"log"
    	"mime/multipart"
    	"net/http"
    )
    
    func main() {
    	buf := new(bytes.Buffer)
    
    	writer := multipart.NewWriter(buf)
    	writer.WriteField("foo", "a")
    	writer.WriteField("foo", "b")
    
    	part, err := writer.CreateFormFile("tmp.png", "tmp.png")
    	if err != nil {
    		return
    	}
    
    	fileData := []byte("hello,world")  // 此处内容可以来自本地文件读取或云存储
    	part.Write(fileData)
    
    	if err = writer.Close(); err != nil {
    		return
    	}
    
    	req, err := http.NewRequest(http.MethodPost,
                                  "http://localhost:8080/multipart",
                                  buf)
    	if err != nil {
    		return
    	}
    
    	req.Header.Add("Content-Type", writer.FormDataContentType())
    
    	resp, err := http.DefaultClient.Do(req)
    	if err != nil {
    		return
    	}
    
    	defer resp.Body.Close()
    
    	data, _ := ioutil.ReadAll(resp.Body)
    
    	fmt.Println(string(data))
    }

    运行 go run multipart.go 输出结果为:

    foo:[a b]
    tmp.png:[0xc420082410]

    51Reboot k8s课程详情咨询WeChat:17812796384

    展开全文
  • 但是有些场合,用表单获取文件是一件比较困难的事情,比如客户端上,用 Canvas 生成了一幅图片,希望把它上传到以上社交网络的相册该怎么办呢? 第一种方法是使用显式的表单,将 Canvas 生成的图片保存...

    人人网开放平台、新浪微博开放平台、腾讯开放平台中,照片上传API均要求采用采用multipart/form-data编码方式提交。但是在有些场合中,用表单获取文件是一件比较困难的事情,比如在客户端上,用 Canvas 生成了一幅图片,希望把它上传到以上社交网络的相册该怎么办呢?

    第一种方法是使用显式的表单,将 Canvas 生成的图片保存到本地,具体操作方法见我的另一篇博客如何将Canvas中的内容保存为本地图片。然后使用 <input type=”file”> 控件,载入这幅图片,并上传到人人网,就像人人网开放平台提供的 JavaScript SDK 一样。

    但是这种方法存在一个问题,根据W3C标准,<input type=”file”> 这个对象的 value 属性是只读的,也就是说,不能通过 JavaScript 来改变其值。参见W3School的FileUpload对象的教程,为安全起见,FileUpload对象不允许HTML作者和JavaScript程序员设定value值,也就是说,这个值必须由用户手动指定。这样,使用这种方法就彻底断绝了一键自动上传的技术路径。

    那么该怎么办呢,参阅人人网的技术文档之后,认为唯一的出路就是模拟multipart / form-data请求,那么如何才能模拟该请求呢? 我想到了ajax。

    但是ajax也彻底断绝了这条技术道路,ajax基于XMLHTTPRequest技术,而这项技术的很大一个遗憾就是无法传送文件。就在我走投无路的时候,知乎上一位高人指点:用XML HTTP Request Level 2。

    XMLHttpRequest Level 2是HTML5的新特性,其目的就是弥补XMLHttpRequest在文件传输中的不足。以往使用XMLHttpRequest来传送文件都是使用overrideMimeType()来欺骗浏览器达到传送二进制文件的目的。但是使用Level 2就不需要这样藏着掖着了,Level 2在send()方法中添加了许多对文件的支持,比如:

    void send();
    void send(ArrayBuffer data);
    void send(Blob data);
    void send(Document data);
    void send(DOMString? data);
    void send(FormData data);

    其中,FormData是一个Level 2新支持的接口,它允许发送key-value对数据,同时允许这些数据可以是文件,请求格式即multipart/form-data。

    FormData的使用方法如下:

    fd = new FormData();
    fd.append(name, value, [filename]);

    处理append方法是这样进行的:先将name赋值;再将value赋值;如果value的类型是字符串,那么就将键值对的type设为text,如果是Blob(参见HTML5的BlobBuilder),则将键值对的type设为file; 如果类型是file,用这种规则定义文件名,优先为filename字段,如果为空,则为Blob的文件名,如果为空,则为’blob’。

    最后使用XMLHttpRequest对象req时,只需要使用:

    req.send(fd);

    这么轻松就解决问题了,下面上实际代码:

    renren.authorize(function(){


    access_token = renren.getAccessToken();
    if (window.console) {
    console.log(access_token);
    }
    // 下列代码是为了产生sig
    var params = {};
    params['access_token'] = access_token;
    params['call_id'] = new Date().valueOf();
    params['method'] = "photos.upload";
    params['v'] = "1.0";
    params['format'] = "json";
    params['caption'] = caption;
     
    var param_array = [];
    //遍历表单中调用接口需要的参数,并拼装成"key=value"形式压入数组
    for (var key in params){
    param_array.push(key + "=" + params[key]);
    }
    // 下列函数 generateSigFromArray 来自人人网的demo
    var sig = generateSigFromArray(param_array, secret_key);
     
    params['sig'] = sig;
     
    // 定义FormData
    var myForm = new FormData();
    // 从 Canvas 中取得数据,dataURItoBlob()见上一篇博客
    var canvas = $("#canvas")[0];
    var canvasToDataURL = canvas.toDataURL('image/png');
    var bb = dataURItoBlob(canvasToDataURL);
    myForm.append('method', params['method']);
    myForm.append('access_token', params['access_token']);
    myForm.append('call_id', params['call_id']);
    myForm.append('v', params['v']);
    myForm.append('caption', params['caption']);
    myForm.append('format', params['format']);
    myForm.append('sig', params['sig']);
    // append一个文件
    myForm.append('upload', bb, 'renren.png');
     
    // 定义一个 XMLHttpRequest 对象
    var req = new XMLHttpRequest();
    req.open("POST", "http://api.renren.com/restserver.do", true);
    req.onreadystatechange = RequestCallBack;
    req.send(myForm);
     
    function RequestCallBack(){
    if (req.readyState == 4){//DONE
    // 此处可以查看 req.status 和req.response 并进行处理了。
    }
    }
    }


    参考文档:

    XMLHttpRequest, Editor’s Draft 14 May 2012

    XMLHttpRequest, MDN

    FormData, MDN

    展开全文
  • upload.jsp通过input提交 1、创建出文件上传的核心组件(ServletFileUpload) 2、将每一个表单控件封装成FileItem 3、判断当前的FileItem是普通的文本还是文件 如果是普通文本则打印,否则保存到upload文件夹下...

    在upload.jsp中通过input提交
    1、创建出文件上传的核心组件(ServletFileUpload)
    2、将每一个表单控件封装成FileItem
    3、判断当前的FileItem是普通的文本还是文件
    如果是普通文本则打印,否则保存到upload文件夹下。
    (1)是文本取出input控件中的name值、获取input控件中的value属性值
    (2)是文件:a.获取上传的文件的名字
    b.将上传的文件保存到upload文件夹中
    在图片与当前的程序之间建立一个输入流
    在程序和upload文件夹之间建立一个输出流
    关闭流

    在这里插入图片描述
    在这里插入图片描述

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	String context = request.getContextPath();// /dt41_javaweb2
    	String path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+context+"/";
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <base href="<%=path %>">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>文件上传</title>
    </head>
    <body>
       <form action="<%=path %>/FileUploadServlet" method="post" enctype="multipart/form-data">
          <p>用户名:<input type="text" name="username"></p>
          <p>用户名:<input type="password" name="password"></p>
          <p>大头照1:<input type="file" name="bigHendImage1"></p>
          <p>大头照2:<input type="file" name="bigHendImage2"></p>
          <p>大头照3:<input type="file" name="bigHendImage3"></p>
          <p><input type="submit" value="提交"></p>
       </form>
    </body>
    </html>
    

    在以上代码中,在文件上床的form表单中,一定要写enctype=“multipart/form-data”,然后通过进行提交。

    package cn.java.servlet;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    import java.util.Map;
    import java.util.UUID;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.json.JSONObject;
    
    import com.sun.xml.internal.bind.v2.model.core.ID;
    import com.sun.xml.internal.ws.db.glassfish.BridgeWrapper;
    
    import cn.java.utils.HttpClientUtil;
    import cn.java.utils.UploadUtils;
    
    /**
     * Servlet implementation class SendMsgServlet
     */
    @WebServlet("/FileUploadServlet")
    public class FileUploadServlet extends HttpServlet {
        
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            try {
    			//1、创建出文件上传的核心组件(ServletFileUpload)
    			DiskFileItemFactory dff =new DiskFileItemFactory();
    			ServletFileUpload sfu=new ServletFileUpload(dff);//FileItemFactory
    			//2、将每一个表单控件封装成FileItem
    			List<FileItem> fileItemList=sfu.parseRequest(request);
    			//3、判断当前的FileItem是普通的文本还是文件
    			for (FileItem fileItem : fileItemList) {
    				//如果是普通文本则打印,否则保存到upload文件夹下
    				boolean flag=fileItem.isFormField();
    				if(flag){//是文本
    					//取出input控件中的name值
    					String fieldName=fileItem.getFieldName();
    					//获取input控件中的value属性值
    					String value=fileItem.getString("utf-8");
    					System.out.println(fieldName+"="+value);
    				}else {//是文件
    					//1、获取上传的文件的名字
    					String fileName=fileItem.getName();
    					System.out.println("您刚才上传的文件名是:"+fileName);
    					//2、将上传的文件保存到upload文件夹中
    					//在图片与当前的程序之间建立一个输入流
    					byte[] buffer=new byte[1024];
    					int len=0;
    					InputStream is =fileItem.getInputStream();
    					
    					//在程序和upload文件夹之间建立一个输出流
    					//动态获取upload文件夹的路径
    					String path=request.getServletContext().getRealPath("/upload");
    					System.out.println(path);
    					String uuid=UUID.randomUUID().toString();
    					//System.out.println(uuid);
    					
    					//后缀名fileName=1.2.3.jpg
    					String[] strArray=fileName.split("\\.");//{"1","2"."3","jpg"}
    					String extension =strArray[strArray.length-1];//jpg、docx、ppt
    
    					FileOutputStream fos=new FileOutputStream(""+path+"\\"+uuid+"."+extension+"");
    					
    					while((len=is.read(buffer))!=-1){
    						fos.write(buffer, 0, len);
    					}
    					//关闭流
    				    is.close();
    				    fos.close();
    				}
    			}
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
                IOException {
            doGet(request, response); 
        }
    
    }
    
    
    展开全文
  • 正式的项目中,不可能只提交一个照片当作一张表,还会有关于照片的信息,那么基于servletfileupload怎么进行判断才能同时将表单中照片跟信息同时上交呢? 代码跟上,里面有详细注释:同时还需要两个jar包: ...

    前一篇文章,介绍了如何以路径方式上传图片到数据库中
    JavaWeb利用jsp 选取图片并将相对路径修改为绝对路径upload上传到Mysql数据库中
    在正式的项目中,不可能只提交一个照片当作一张表,还会有关于照片的信息,那么基于servletfileupload怎么进行判断才能同时将表单中的照片跟信息同时上交呢?
    代码跟上,里面有详细注释:同时还需要两个jar包:
    com.springsource.org.apache.commons.fileupload-1.2.0.jar
    commons-io-2.8.0.jar

    可以自行去下载
    html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="upload2.jsp" method="post" enctype="multipart/form-data">
        服装名称:<input type="text" name="cnames"><br><!--输入框-->
        服装编号:<input type="text" name="cids"><br>
        服装价格:<input type="text" name="prices"><br>
        服装数量:<input type="text" name="cnums"><br>
        服装品类:<input type="text" name="ckinds"><br>
        服装照片:<input type="file" name="myfile"><br>
        <input type="submit" value="提交">
    </form>
    </body>
    </html>
    

    注意这里上传文件必须设置 enctype=“multipart/form-data”

    upload.jsp:

    <%--
      Created by IntelliJ IDEA.
      User: wangzeyi
      Date: 2020/12/20
      Time: 下午2:58
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page import="org.apache.commons.fileupload.*" %>
    <%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
    <%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>
    <%@ page import="java.sql.*" %>
    <%@ page import="java.util.*" %>
    <%@ page import="java.text.*" %>
    <%@ page import="java.io.*" %>
    <%@ page import="org.apache.commons.fileupload.FileItem" %>
    <%@ page contentType="text/html;charset=UTF-8" import="java.util.*" language="java" %>
    <%
        request.setCharacterEncoding("utf-8");
        //判断是普通表单还是文件上传
        boolean flag = ServletFileUpload.isMultipartContent(request);
    
        if(flag){
            String cnames = null; //服装名称,用来传值
            String cids = null; //服装编号,传值
            String prices = null;//服装价格,传值
            String filename = null;//服装照片名称,传值
            String path = "upload";//服装照片存储时的据对路径,传值
            String cnums = null;//服装数量,传值
            String ckinds = null;//服装种类,传值
            //定义一个解析器,来分析请求中各个项目
            DiskFileItemFactory factory = new DiskFileItemFactory();
            //解析upload创建成功
            ServletFileUpload upload = new ServletFileUpload(factory);
            List<FileItem>fileList = upload.parseRequest(request);
            //在未加入commons-io-2.8.0.jar之前会出现500错误
            //java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
            //原因可能是:使用commons-fileupload的版本大于1.0
            //每一个fileItem都代表一个表单元素
            Iterator<FileItem>myitor = fileList.iterator();
            while (myitor.hasNext()) {
                FileItem item = myitor.next();
                if (item.isFormField()) { //判断表单内容是非文件形式还是文件形式,此处为非文件形式
                    String name = item.getFieldName(); //获取表单中元素的名称
                    String value = item.getString("utf-8"); //获取表单中元素的值
                    if (name.equals("cnames")) { //将名称与相对的输入框匹配
                        cnames = value;  //传值
                    }
                    if (name.equals("cids")) {
                        cids = value;//传值
                    }
                    if (name.equals("prices")) {
                        prices = value;//传值
                    }
                    if (name.equals("cnums")) {
                        cnums = value;//传值
                    }
                    if (name.equals("ckinds")) {
                        ckinds = value;//传值
                    }
                }
                else { //当表单内容为文件形式,上传文件到指导路径
                    filename = item.getName();
                    //服务器目录下相对目录 相对路径
                    String absolutepath = this.getServletConfig().getServletContext().getRealPath(path);
                    File file = new File(filename);
                    File uploadFile = new File(absolutepath, file.getName());
                    try { //这里必须加一个异常处理不然会报错
                        item.write(uploadFile); //上传
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    out.println("上传成功");
                }
            }
            //连接数据库,将附值后的全局变量存入数据库中
                    try {
                        Class.forName("com.mysql.jdbc.Driver");
                    } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                    }
                    //加载JDBC驱动程序
                    String url = "jdbc:mysql://localhost:3306/ClothesM2";
                    //file_db为数据库的名称
                    String user = "root";
                    //连接Mysql数据库的密码
                    String password = "Wzy768291";
    
                    Connection conn = DriverManager.getConnection(url,user,password);
                    //创建连接
                    try{
                        String sql="insert into clothes(cname, cid, price, filename, path, cnum, ckinids) values('"+cnames+"',?,?,?,?,?,?)";
                        //插入记录的sql语句
                        PreparedStatement pstmt = conn.prepareStatement(sql);//创建PreparedStatement对象
                        pstmt.setString(1,cids);//将字符cids存储到pstmt对象中
                        pstmt.setString(2,prices);//将字符prices存储到pstmt对象中
                        pstmt.setString(3,filename);//将字符filename存储到pstmt对象中
                        pstmt.setString(4,path);//将字符path存储到pstmt对象中
                        pstmt.setString(5,cnums);//将字符cnums存储到pstmt对象中
                        pstmt.setString(6,ckinds);//将字符ckinds存储到pstmt对象中
                        pstmt.execute();//patmt将记录插入到数据库中
                        out.println("恭喜,你已经成功将信息上传入数据库");
                    }
                    catch (SQLException e){
                        out.println("出现SQLException异常");//如果重复上传同一张,即数据库中保存的有的话,会抛出异常,并不再添加
                    }
        }
    %>
    
    

    下面为演示过程:
    运行,这里输入服装信息,选取要上传的照片
    在这里插入图片描述
    点击提交,出现提醒成功上传,传入数据库成功
    刷新数据库,看到我们刚刚输入的服装信息,以及图片:
    在这里插入图片描述

    展开全文
  • // 自己的项目构造出一个用于存放用户照片的文件夹 String projectpath = this.getServletContext().getRealPath( "/headPhoto/"); // 如果此文件夹不存在,则构造此文件夹 File f = new File(p
  • Android的客户端编程(特别是SNS 类型的客户端),经常需要实现注册功能...但这时就有一个问题,HTML中用form表单就 能实现如上的注册表单,需要的信息会自动封装为完整的HTTP协议,但Android中如何把...
  • 应用:上传照片、上传新闻图片、上传附件  一、文件上传编程 1、用户页面添加上传输入项 (客户端页面操作) 注意事项: 1) 必须为文件上传input 提供name属性,否则文件上传内容不会被表单提交  2) 表单的...
  • 而我们也常遇到表单中包含图片上传的需求,并且需要table中显示图片,所以这里我就讲一下结合后端的SpringMVC框架如何实现图片上传并提交到表单中table表格中回显照片。 本案例对应的开源项目地址请看我的...
  • Vue+ElementUI+SpringMVC实现图片上传和table回显而我们也常遇到表单中包含图片上传的需求,并且需要table中显示图片,所以这里我就讲一下结合后端的SpringMVC框架如何实现图片上传并提交到表单中...
  • android http上传文件

    千次阅读 2010-04-27 15:30:00
    但这时就有一个问题,HTML中用form表单就能实现如上的注册表单,需要的信息会自动封装为完整的HTTP协议,但Android中如何把这些参数和需要上传的文件封装为HTTP协议呢?我们可以先做个试验,看一下form表单到底...
  • Android 模拟HTTP 协议进行表单提交

    千次阅读 2012-10-16 17:14:34
    但这时就有一个问题,HTML中用form表单就能实现如上的注册表单,需要的信息会自动封装为完整的HTTP协议,但Android中如何把这些参数和需要上传的文件封装为HTTP协议呢? 我们可以先做个试验,看一下form表单...
  •     在表单数据中,我们可能会遇到头像、照片等图片的上传等需求,那么如果表单中包含一个图片元素,我们在controller中应该如何接收呢? 正文     在实际的项目中,我们通常都会有专门的图片服务器来存储图片,...
  • struts2经常用图片上传action中如何获得上传图片的名称及其类型呢。 [color=green][size=medium]第一步:表单填写。[/size][/color] 这里用struts标签。 请选择照片: [color=green]...
  • 但这时就有一个问题,HTML中用form表单就能实现如上的注册表单,需要的信息会自动封装为完整的HTTP协议,但Android中如何把这些参数和需要上传的文件封装为HTTP协议呢? 我们可以先做个试验,看一下form表单...
  • 这是表单中的代码: 照片:<input type="file" name="ufile"><br/> 这是提交页的代码:String file1=smart.getRequest().getParameter("ufile"); 输出file1里面的值是null 我应该如何的 获取上传文件的路径 把它...
  • 比如Facebook的编辑照片界面,可以把整个相册的照片(最多60张)放一起进行批量编辑,或者把一次上传的若干张照片一起编辑。这种情况下,如何用ActionForm来获取这些数据呢? 这个ActionForm(假设名为PhotoForm...
  • 利用html 手机访问时,点击input控件进行拍照,是使用过程发现有一部分手机(iphone6 iphone8 iphone11和iphonexr) 拍照是被旋转过了,按照网上的办法处理了exif 为6的旋转 导致原来可以正常拍照的手机照片被旋转...
  • HTML与CSS入门经典(第7版

    热门讨论 2012-09-03 21:50:17
    18.5在表单中包含隐藏数据 18.6表单输入控件 18.6.1复选框 18.6.2单选按钮 18.6.3选择列表 18.6.4文本区域 18.7提交表单数据 18.8使用PayPal BuyNow按钮 18.9总结 18.10问与答 18.11作业 18.11.1坝4验 ...
  • 本书是第II卷,以开发人员项目开发经常遇到的问题和必须掌握的技术为核心,介绍了应用Visual Basic进行程序开发的多方面的知识和技巧,主要包括Visual Basic的多媒体开发、数据库应用、网络技术与Web开发、安全...
  • 本书是第II卷,以开发人员项目开发经常遇到的问题和必须掌握的技术为核心,介绍了应用Visual Basic进行程序开发的多方面的知识和技巧,主要包括Visual Basic的多媒体开发、数据库应用、网络技术与Web开发、安全...
  • PHP开发实战宝典

    热门讨论 2011-12-02 07:34:49
    9.2 Web页创建表单 175 9.3 Web页嵌入PHP脚本 177 9.3.1 HTML标记嵌入PHP脚本 177 9.3.2 为表单元素赋值 178 9.4 提交表单数据 178 9.4.1 POST方法提交表单数据 179 9.4.2 GET方法提交表单数据 179 ...
  • 10.2.2 设计时国际化GUI表单 273 10.2.3 国际化整个项目 277 10.3 小结 281 第11章 请保持联系——JAVA网络连接 283 11.1 讲解 284 11.1.1 Java网络连接的基本概念 284 11.1.2 使用TCP协议的Socket网络编程 ...
  • 10.2.2 设计时国际化GUI表单 273 10.2.3 国际化整个项目 277 10.3 小结 281 第11章 请保持联系——JAVA网络连接 283 11.1 讲解 284 11.1.1 Java网络连接的基本概念 284 11.1.2 使用TCP协议的Socket网络编程 ...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

如何在表单中上传照片