亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Cordova文件傳輸插件fileTransfer

2019-11-09 17:34:58
字體:
來源:轉載
供稿:網友

http://blog.csdn.net/chenglinping/article/details/42008143

任務要求:

訪問手機的目錄,選擇一個文件,并使用該插件將指定文件傳輸到遠程主機的某個指定目錄中。

html代碼:

<!DOCTYPE html><!--    Licensed to the Apache Software Foundation (ASF) under one    or more contributor license agreements.  See the NOTICE file    distributed with this work for additional information    regarding copyright ownership.  The ASF licenses this file    to you under the Apache License, Version 2.0 (the    "License"); you may not use this file except in compliance    with the License.  You may obtain a copy of the License at    http://www.apache.org/licenses/LICENSE-2.0    Unless required by applicable law or agreed to in writing,    software distributed under the License is distributed on an    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY     KIND, either exPRess or implied.  See the License for the    specific language governing permissions and limitations    under the License.--><html>    <head>        <meta charset="utf-8" />        <meta name="format-detection" content="telephone=no" />        <meta name="msapplication-tap-highlight" content="no" />        <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />        <link rel="stylesheet" type="text/CSS" href="css/index.css" />        <title>Hello World</title>    </head>    <body>        <div class="app">            <h1>Apache Cordova</h1>            <div id="deviceready" class="blink">                <p class="event listening">Connecting to Device</p>                <p class="event received">Device is Ready</p>            </div>        </div>        <script type="text/javascript" src="cordova.js"></script>        <script type="text/Javascript" src="js/index.js"></script>        <!-- 照相機  -->        <script type="text/javascript" src="js/camera.js"></script>        <input type="button" value="take pictures" onclick="snapPictures()" />        <img style="width:100px;height:100px;position:absolute;left:100px;top:50px;" id="myImage" />                <!-- 地理位置 -->        <script type="text/javascript" src="js/geolocation.js"></script>        <input type="button" value="location" onclick="getLocation()" />                <!-- 文件傳輸 -->        <script type="text/javascript" src="js/fileTransfer.js"></script>        <input type="button" value="fetchFile" onclick="fetchPictures()" />        <!-- <input type="button" value="fileTransfer" onclick="startTransfer()" /> -->            </body></html>

js代碼:

/**選擇圖片庫***/function fetchPictures(){navigator.camera.getPicture(fetchPictureSuccess, fetchPictureFail, { quality: 50,        destinationType: Camera.DestinationType.FILE_URI,//存儲照片的數據/路徑        sourceType : Camera.PictureSourceType.PHOTOLIBRARY  ,//打開系統的圖片庫        encodingType: Camera.EncodingType.JPEG,        mediaType:Camera.MediaType.PICTURE,        popoverOptions : CameraPopoverOptions,        saveToPhotoAlbum: true    });}function fetchPictureSuccess(imageURI) {var image = document.getElementById('myImage');image.src = imageURI;picUrl = imageURI;    /**文件上傳start***/              var serverUri = encodeURI('http://192.168.1.101:8080/testTransfer/test.do');    function fileTransferSuccess(result) {    alert("success");    alert("Code = " + result.responseCode + "Response = " + result.response     + "Sent = " + result.bytesSent);    }    function fileTransferError(error) {    alert("fail");    alert("An error has occurred: Code = " + error.code + "upload error source " + error.source        + "upload error target " + error.target);    }        var fileUploadOptions = new FileUploadOptions();    fileUploadOptions.fileKey = "file";    fileUploadOptions.fileName = picUrl.substr(picUrl.lastIndexOf('/')+1);    fileUploadOptions.mimeType = "image/jpeg";//    fileUploadOptions.chunkedMode = false;        var fileTransfer = new FileTransfer();    alert("picUrl : "+picUrl + "******serverUri : " + serverUri);// fileTransfer.onprogress = function(progressEvent) {//    if (progressEvent.lengthComputable) {//      loadingStatus.setPercentage(progressEvent.loaded / progressEvent.total);//    } else {//      loadingStatus.increment();//    }// };fileTransfer.upload(picUrl, serverUri,fileTransferSuccess, fileTransferError, fileUploadOptions);        /**文件上傳end***/        }function fetchPictureFail(message) {    alert('Failed because: ' + message);}server端JAVA:

package com.cn.server;import java.io.File;import java.io.IOException;import java.net.URLDecoder;import java.util.Iterator;import java.util.List;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.FileItemFactory;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;/** * Servlet implementation class Test */@WebServlet("/Test")public class Test extends HttpServlet {private static final long serialVersionUID = 1L;       /*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   System.out.println("Doing post....");   System.out.println(request.getRequestURI());   /**   * The base upload directory. In this directory all uploaded files will   * be stored. With the applet param tag 'directory' you can create a   * subdirectory for a user.    * See http://www.javaatwork.com/parameters.html#directory for more    * information about the 'directory' param tag. For a Windows environment    * the BASE_DIRECTORY can be e.g. * 'c:/temp' for linux environment '/tmp'.   */   boolean isMultipart = ServletFileUpload.isMultipartContent(request);   // check if the http request is a multipart request   // with other Words check that the http request can have uploaded files   if (isMultipart) {     //  Create a factory for disk-based file items     FileItemFactory factory = new DiskFileItemFactory();     //  Create a new file upload handler     ServletFileUpload servletFileUpload = new ServletFileUpload(factory);     // Set upload parameters     // See Apache Commons FileUpload for more information     // http://jakarta.apache.org/commons/fileupload/using.html     servletFileUpload.setSizeMax(-1);     try {       String directory = "";       // Parse the request       List items = servletFileUpload.parseRequest(request);       // Process the uploaded items       Iterator iter = items.iterator();       while (iter.hasNext()) {         FileItem item = (FileItem) iter.next();         // the param tag directory is sent as a request parameter to         // the server         // check if the upload directory is available         if (item.isFormField()) {           String name = item.getFieldName();           if (name.equalsIgnoreCase("directory")) {             directory = item.getString();           }           // retrieve the files         } else {           // the fileNames are urlencoded           String fileName = URLDecoder.decode(item.getName());           File file = new File(directory, fileName+".jpeg");           file = new File("D://androidApp圖片//", file.getPath());           // retrieve the parent file for creating the directories           File parentFile = file.getParentFile();           if (parentFile != null) {             parentFile.mkdirs();           }           // writes the file to the filesystem           item.write(file);         }       }     } catch (Exception e) {       e.printStackTrace();       response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);     }     response.setStatus(HttpServletResponse.SC_OK);   } else {     response.setStatus(HttpServletResponse.SC_BAD_REQUEST);   }}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response);}}server端web.xml:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>testTransfer</display-name>  <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list>  <servlet>    <servlet-name>Test</servlet-name>    <servlet-class>com.cn.server.Test</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>Test</servlet-name>    <url-pattern>/test.do</url-pattern>  </servlet-mapping></web-app>

問題是:

cordova run Android之后發現一直上傳失敗報錯:3 = FileTransferError.CONNECTION_ERR,修改一天多始終沒發現js或者server代碼出問題,

最后我抱著死馬當活馬醫,用別人的電腦訪問我的server的URL,竟然過時連接失敗,原來是我電腦自身的防火墻設置沒有允許別人訪問,修改如下:

在電腦的“控制面板/系統和安全/Windows 防火墻/自定義設置‘里關閉防火墻,就OK了。

太浪費時間了?。?!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品h片在线播放| 欧美国产视频日韩| 91亚洲精华国产精华| 91亚洲精品久久久久久久久久久久| 韩剧1988免费观看全集| 亚洲精品自产拍| 九九热这里只有精品6| 亚洲美女自拍视频| 中文字幕在线看视频国产欧美在线看完整| 精品久久久久国产| 国产精品久久一区主播| 亚洲一级片在线看| 亚洲国产精品嫩草影院久久| 精品调教chinesegay| 成人免费大片黄在线播放| 奇米四色中文综合久久| 亚洲欧美在线一区二区| 97国产成人精品视频| 色悠悠久久久久| 久久久免费观看视频| 久久综合国产精品台湾中文娱乐网| 日韩精品视频免费专区在线播放| 伊人久久男人天堂| 日韩高清av一区二区三区| 青青a在线精品免费观看| 亚洲第一页在线| 日韩精品在线视频观看| 久久精品国产亚洲一区二区| 亚洲高清不卡av| 欧美成人精品一区二区三区| 亚洲aⅴ日韩av电影在线观看| 亚洲美女在线视频| 欧美巨乳美女视频| 成人免费视频网| 国产91在线高潮白浆在线观看| 最新69国产成人精品视频免费| 日韩毛片在线观看| 高清欧美性猛交xxxx| 亚洲另类欧美自拍| 亚洲白拍色综合图区| 97免费视频在线| 欧美性xxxxx极品| 日韩一区二区av| 国产精品久久久一区| 亚洲在线免费看| 精品电影在线观看| 欧美性xxxxhd| 国产91对白在线播放| 午夜精品福利在线观看| 这里只有精品久久| 美女久久久久久久久久久| 黄网动漫久久久| 97热精品视频官网| 国产精品一区av| 日韩成人av一区| 亚洲国产福利在线| 久久在线观看视频| 国产精品成人免费视频| 精品夜色国产国偷在线| 日韩精品福利网站| 欧美精品久久久久久久免费观看| 在线播放精品一区二区三区| 国产精品白丝jk喷水视频一区| 成人国内精品久久久久一区| 色综合视频一区中文字幕| 国产精品第七影院| 精品自在线视频| 亚洲欧美国产一本综合首页| 美乳少妇欧美精品| 国产久一一精品| 精品国内自产拍在线观看| 成人精品一区二区三区电影黑人| 亚洲色图偷窥自拍| 亚洲毛片在线看| 欧美高清在线视频观看不卡| 亚洲一区二区三区视频播放| 国产欧美在线观看| 欧美性猛交xxxx久久久| 亚洲欧美另类在线观看| 亚洲xxxxx性| 国产午夜精品免费一区二区三区| 精品久久久国产| 亚洲xxxx视频| 亚洲一区二区三区毛片| 国产精品h在线观看| 91亚洲精品一区| 精品久久久久久久大神国产| 国产不卡在线观看| 国产91在线播放| 色噜噜狠狠狠综合曰曰曰88av| 国产精品免费一区二区三区都可以| 成人欧美一区二区三区黑人孕妇| 久久av在线播放| 欧美大码xxxx| 久久99国产精品自在自在app| 国产精品999| 国产91精品最新在线播放| 欧美人与物videos| 亚洲综合在线中文字幕| 国产精品久久一| 亚洲在线一区二区| 国产精品福利无圣光在线一区| 欧美在线一级va免费观看| 精品国产美女在线| 国产婷婷97碰碰久久人人蜜臀| 亚洲裸体xxxx| 不卡毛片在线看| 久久久精品欧美| 欧美成人午夜激情| 亚洲色图日韩av| 久久久国产视频91| 亚洲欧美成人一区二区在线电影| 欧美激情videos| 国a精品视频大全| 国产亚洲欧美日韩美女| 亚洲缚视频在线观看| 91精品视频在线免费观看| 国产一区香蕉久久| 国产91热爆ts人妖在线| 青青草成人在线| 最近2019中文字幕mv免费看| 成人中心免费视频| 欧美特黄级在线| 欧美黑人国产人伦爽爽爽| 亚洲精品国产成人| 国产精品69精品一区二区三区| 国产精品免费电影| 在线观看亚洲视频| 国产欧美一区二区三区在线| 国产午夜精品麻豆| 91色琪琪电影亚洲精品久久| 国产精品激情自拍| 欧美日韩国产限制| 亚洲aⅴ日韩av电影在线观看| 亚洲国产精品成人一区二区| 国产日韩欧美视频在线| 亚洲乱码国产乱码精品精| 精品中文字幕在线观看| xvideos成人免费中文版| 久久免费精品视频| 在线播放精品一区二区三区| 欧美做受高潮1| 亚洲最大成人免费视频| 亚洲国产精品久久久久久| 日韩欧美国产中文字幕| 福利一区视频在线观看| 亚洲国产成人久久综合一区| 4p变态网欧美系列| 91久久久久久久久| 精品久久中文字幕| 国产日本欧美在线观看| 久久久久www| 亚洲欧美精品在线| 久久久久久九九九| 欧美精品在线免费观看| 国产丝袜精品视频| 欧美自拍视频在线观看| 久久久久久久久久久国产| 欧美精品激情在线观看| 91亚洲永久免费精品| 日韩电影中文字幕av| 精品人伦一区二区三区蜜桃免费| 欧美亚洲在线观看| 国产福利精品av综合导导航|