我面临的问题在这里,因为在你选择一个图片时,手机图像被上传到服务器.我不想在提交表单之前上传图像.图像自动上传到服务器,这是我不想要的东西.我想使用表单上传图像,其中表单包含更多的字段,这些字段与图像一起发送.用表单提交的可能方式是什么?
<!DOCTYPE HTML > <html> <head> <title>Registration Form</title> <script type="text/javascript" charset="utf-8" src="phonegap-1.2.0.js"></script> <script type="text/javascript" charset="utf-8"> // Wait for PhoneGap to load document.addEventListener("deviceready",onDeviceReady,false); // PhoneGap is ready function onDeviceReady() { // Do cool things here... } function getImage() { // Retrieve image file location from specified source navigator.camera.getPicture(uploadPhoto,function(message) { alert('get picture Failed'); },{ quality: 50,destinationType: navigator.camera.DestinationType.FILE_URI,sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY });} function uploadPhoto(imageURI) { var options = new FileUploadOptions(); options.fileKey="file"; options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1); options.mimeType="image/jpeg"; var params = new Object(); params.value1 = "test"; params.value2 = "param"; options.params = params; options.chunkedMode = false; var ft = new FileTransfer(); ft.upload(imageURI,"http://yourdomain.com/upload.PHP",win,fail,options); } function win(r) { console.log("Code = " + r.responseCode); console.log("Response = " + r.response); console.log("Sent = " + r.bytesSent); alert(r.response); } function fail(error) { alert("An error has occurred: Code = " = error.code); } </script> </head> <body> <form id="regform"> <button onclick="getImage();">select Avatar<button> <input type="text" id="firstname" name="firstname" /> <input type="text" id="lastname" name="lastname" /> <input type="text" id="workPlace" name="workPlace" class="" /> <input type="submit" id="btnSubmit" value="Submit" /> </form> </body> </html>
解决方法
创建两个可以单独调用的功能.一个功能只是获取图像,另一个功能上传图像.
你可以做下面的事情.
<!DOCTYPE html> <html> <head> <title>Submit form</title> <script type="text/javascript" charset="utf-8" src="cordova.js"></script> <script type="text/javascript" charset="utf-8"> var pictureSource; // picture source var destinationType; // sets the format of returned value // Wait for device API libraries to load // document.addEventListener("deviceready",false); // device APIs are available // function onDeviceReady() { pictureSource = navigator.camera.PictureSourceType; destinationType = navigator.camera.DestinationType; } // Called when a photo is successfully retrieved // function onPhotoURISuccess(imageURI) { // Show the selected image var smallImage = document.getElementById('smallImage'); smallImage.style.display = 'block'; smallImage.src = imageURI; } // A button will call this function // function getPhoto(source) { // Retrieve image file location from specified source navigator.camera.getPicture(onPhotoURISuccess,onFail,{ quality: 50,destinationType: destinationType.FILE_URI,sourceType: source }); } function uploadPhoto() { //selected photo URI is in the src attribute (we set this on getPhoto) var imageURI = document.getElementById('smallImage').getAttribute("src"); if (!imageURI) { alert('Please select an image first.'); return; } //set upload options var options = new FileUploadOptions(); options.fileKey = "file"; options.fileName = imageURI.substr(imageURI.lastIndexOf('/')+1); options.mimeType = "image/jpeg"; options.params = { firstname: document.getElementById("firstname").value,lastname: document.getElementById("lastname").value,workplace: document.getElementById("workplace").value } var ft = new FileTransfer(); ft.upload(imageURI,encodeURI("http://some.server.com/upload.PHP"),options); } // Called if something bad happens. // function onFail(message) { console.log('Failed because: ' + message); } function win(r) { console.log("Code = " + r.responseCode); console.log("Response = " + r.response); //alert("Response =" + r.response); console.log("Sent = " + r.bytesSent); } 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); } </script> </head> <body> <form id="regform"> <button onclick="getPhoto(pictureSource.PHOTOLIBRARY);">Select Photo:</button><br> <img style="display:none;width:60px;height:60px;" id="smallImage" src="" /> First Name: <input type="text" id="firstname" name="firstname"><br> Last Name: <input type="text" id="lastname" name="lastname"><br> Work Place: <input type="text" id="workplace" name="workPlace"><br> <input type="button" id="btnSubmit" value="Submit" onclick="uploadPhoto();"> </form> </body> </html>