javascript - 使用phonegap在android中图像上传时间EOF发生异常?

标签 javascript android cordova

我尝试在第一次成功上传一个图像 uploader ,但是当我尝试第二次上传时,它发生了这种错误。任何人都可以知道如何解决这个问题。我正在尝试使用这个

         W/FileTransfer(12197): Error getting HTTP status code from connection.
         W/FileTransfer(12197): java.io.EOFException
         W/FileTransfer(12197):     at libcore.io.Streams.readAsciiLine(Streams.java:203)
         W/FileTransfer(12197):     at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:573)
         W/FileTransfer(12197):     at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:821)
         W/FileTransfer(12197):     at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283)
         W/FileTransfer(12197):     at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:495)
         W/FileTransfer(12197):     at org.apache.cordova.FileTransfer$1.run(FileTransfer.java:400)
         W/FileTransfer(12197):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
         W/FileTransfer(12197):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
         W/FileTransfer(12197):     at java.lang.Thread.run(Thread.java:856)

          D/dalvikvm(12197): GC_CONCURRENT freed 976K, 31% free 2992K/4292K, paused 6ms+13ms, total 130ms
                            E/FileTransfer(12197): {"target":"http:\/\/10.2.4.142:8899\/assets\/www\/php\/upload.php","source":"\/mnt\/sdcard\/req_images\/gi.jpg","http_status":0,"code":3}

         E/FileTransfer(12197): java.io.EOFException
         E/FileTransfer(12197):     at libcore.io.Streams.readAsciiLine(Streams.java:203)
         E/FileTransfer(12197):     at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:573)
         E/FileTransfer(12197):     at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:821)
        E/FileTransfer(12197):  at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283)
         E/FileTransfer(12197):     at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:495)
         E/FileTransfer(12197):     at org.apache.cordova.FileTransfer$1.run(FileTransfer.java:400)
         E/FileTransfer(12197):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
        /FileTransfer(12197):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
         E/FileTransfer(12197):     at java.lang.Thread.run(Thread.java:856)
         E/FileTransfer(12197): Failed after uploading 25310 of 25310 bytes.


        <!DOCTYPE html>
        <html>

            <head>
                <title>Capture Photo</title>
                <script type="text/javascript" charset="utf-8" src="cordova-2.5.0.js"></script>
                <script src="js/jquery.js"></script>
                <script type="text/javascript" src="js/imgresizerplugin.js"></script>
                <script type="text/javascript" charset="utf-8">
                    var pictureSource;
                    var destinationType;
                    var fullsourcepath;
                    var options;
                    document.addEventListener("deviceready", onDeviceReady, false);

                    function onDeviceReady() {
                        pictureSource = navigator.camera.PictureSourceType;
                        destinationType = navigator.camera.DestinationType;
                    }

                    $(document).ready(function () {

                        $("#getphoto").click(function (source) {

                            navigator.camera.getPicture(onPhotoURISuccess, onFail, {
                                quality: 50,
                                destinationType: destinationType.FILE_URI,
                                sourceType: pictureSource.PHOTOLIBRARY
                            });
                        });

                        $("#uploadpic").click(function () {

                            var rname = $("#rname").val();
                            console.log(rname);
                            if (fullsourcepath != null) {

                                imgresizerplugin.resize(function (winParam) {

                                    options = new FileUploadOptions();
                                    options.fileKey = "photo";
                                    options.fileName = winParam.substr(winParam.lastIndexOf('/') + 1);
                                    options.mimeType = "image/jpeg";

                                    var params = {};
                                    params.value1 = "test";
                                    params.value2 = "param";

                                    options.params = params;
                                    options.chunkedMode = false;
                                    var ft = new FileTransfer();
                                    ft.upload(winParam, encodeURI("http://10.2.4.142:8899/assets/www/php/upload.php"), win, fail, options);

                                    function win(r) {
                                        console.log("Code = " + r.responseCode);
                                        console.log("Response = " + r.response);
                                        console.log("Sent = " + r.bytesSent);
                                        $("#imgs").css("display", "none");
                                        $("#rname").val("");
                                        fullsourcepath = null;
                                    }

                                    function fail(error) {
                                        alert("An error has occurred: Code = " + error.code);
                                        console.log("upload error source " + error.source);
                                        console.log("upload error target " + error.target);
                                    }

                                }, function (e) {
                                    alert(' Failed:' + e);
                                }, fullsourcepath, rname);
                            } else {
                                alert("Please select Image");
                            }

                        });

                        function onPhotoURISuccess(imageURI) {
                            //  alert(imageURI);

                            window.resolveLocalFileSystemURI(imageURI,

                            function (entry) {

                                console.log("fullpath::" + entry.fullPath);

                                /*     cordova.exec(function(winParam) {console.log("getpath:" +winParam)}, function(error) {},"Imgresizer", "imgresizer", [entry.fullPath]);
                                 */
                                fullsourcepath = entry.fullPath;


                                var fileNameIndex = entry.fullPath.lastIndexOf("/") + 1;
                                var filename = entry.fullPath.substr(fileNameIndex);

                                $("#rname").val(filename);
                                $("#imgs").attr('src', entry.fullPath);
                                $("#imgs").css("display", "block");
                            },

                            function (evt) {
                                console.log("evet code" + evt.code);
                            });

                        }

                        function onFail(message) {
                            alert('Failed because: ' + message);
                        }

                    });
                </script>
            </head>

            <body>
                <p>
                    <label for="rname">Image Rename :</label>
                    <input name="rname" id="rname" placeholder="" value="" type="text" />
                </p>
                <p>
                    <input type="button" id="getphoto" value="Get Pic from gallary" name="getphoto" />
                    <input type="button" id="uploadpic" value=" Upload Pic" name="uploadpic" />
                </p>
                <img id="imgs" width="300" height="300" />
            </body>

        </html>

最佳答案

此错误已在 Phonegap 2.8.0 上修复

https://issues.apache.org/jira/browse/CB-2293

关于javascript - 使用phonegap在android中图像上传时间EOF发生异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15542146/

相关文章:

javascript - 检查对象中的任何变量是否有 null/undefined/emptyString ('' )

java - Android - 从 0,0 开始获取触摸位置

cordova - Cordova 3.4.0 上的文件系统失败 "Could not create target file"

javascript - 类型 'transformArticles' 上不存在属性 'typeof Article'

javascript - 无法将工具提示 header 样式化为 'pull-left'

java - 将参数传递给 onProgressUpdate 时出现问题 - 异步方法

ios - ionic 2 - 在 ipad 设备上运行应用程序

ios - cordova build ios 不创建 ipa 文件

javascript - JS 正则表达式仅允许数字、分号和连字符

android - 基于位置的增强现实 Android SDK