Хотите загрузить рис на сервер с помощью phonegap в android
Я делаю проект в телефоне Android и хочу загрузить pic на сервер.
Но я не понимаю, куда я должен поместить этот код.
Я не могу показать кнопки для загрузки фотографий, пожалуйста, помогите.
Я новичок в этом. Я ссылаюсь на этот код из документации по телефонной документации.
Я пробую это часами, но не могу получить лучшее решение.
Это мой первый проект андроид-телефонии.
Код:
<head>
<script type="text/javascript" charset="utf-8" src="cordova-2.4.0.js"></script>
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
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 = {};
params.value1 = "test";
params.value2 = "param";
options.params = params;
var ft = new FileTransfer();
ft.upload(imageURI, encodeURI("http://some.server.com/upload.php"), win, fail, options);
}
function win(r) {
console.log("Code = " + r.responseCode);
console.log("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>
<h1>Example</h1>
<p>Upload File</p>
</body>
Ответы
Ответ 1
Вы решаете свою проблему, используя следующий код:
<script type="text/javascript">
function uploadFromGallery() {
// 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)+'.png';
options.mimeType="text/plain";
var params = new Object();
options.params = params;
var ft = new FileTransfer();
ft.upload(imageURI, encodeURI("http://some.server.com/upload.php"), win, fail, options);
}
function win(r) {
console.log("Code = " + r.responseCode);
console.log("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>
<a data-role="button" onClick="uploadFromGallery();">Upload from Gallery</a>
</body>
Подробнее об этом сообщении:
fooobar.com/questions/378203/...
Ответ 2
Попробуйте использовать следующий код.
// A button will call this function
// To capture photo
function capturePhoto() {
// Take picture using device camera and retrieve image as base64-encoded string
navigator.camera.getPicture(uploadPhoto, onFail, {
quality: 50, destinationType: Camera.DestinationType.FILE_URI
});
}
// A button will call this function
// To select image from gallery
function getPhoto(source) {
// Retrieve image file location from specified source
navigator.camera.getPicture(uploadPhoto, onFail, { quality: 50,
destinationType: navigator.camera.DestinationType.FILE_URI,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
});
}
function uploadPhoto(imageURI) {
//If you wish to display image on your page in app
// Get image handle
var largeImage = document.getElementById('largeImage');
// Unhide image elements
largeImage.style.display = 'block';
// Show the captured photo
// The inline CSS rules are used to resize the image
largeImage.src = imageURI;
var options = new FileUploadOptions();
options.fileKey = "file";
var userid = '123456';
var imagefilename = userid + Number(new Date()) + ".jpg";
options.fileName = imagefilename;
options.mimeType = "image/jpg";
var params = new Object();
params.imageURI = imageURI;
params.userid = sessionStorage.loginuserid;
options.params = params;
options.chunkedMode = false;
var ft = new FileTransfer();
var url = "Your_Web_Service_URL";
ft.upload(imageURI, url, win, fail, options, true);
}
//Success callback
function win(r) {
alert("Image uploaded successfully!!");
}
//Failure callback
function fail(error) {
alert("There was an error uploading image");
}
// Called if something bad happens.
//
function onFail(message) {
alert('Failed because: ' + message);
}
Создайте кнопку на своей HTML-странице, на ней onclick
вызовите вызов следующих функций согласно вашему требованию.
- Вызов
capturePhoto()
для съемки и загрузки фотографий.
- Вызов функции
getPhoto()
для получения изображения из галереи.
HTML должен содержать такие кнопки, как:
<input name="button" type="button" onclick="capturePhoto()" value="Take Photo"/>
<input name="button" type="button" onclick="getPhoto();" value="Browse" />
Надеюсь, что это поможет.
Ответ 3
Это одно примерное приложение, которое я сделал для загрузки pic на сервер
function getphoto()
{
navigator.camera.getPicture(uploadPhoto, function(message)
{
alert('get picture failed');
},
{
quality: 10,destinationType:navigator.camera.DestinationType.FILE_URI,sourceType:navigator.camera.PictureSourceType.PHOTOLIBRARY });
}
function uploadPhoto(imageURI)
{
alert("imageURI: " + imageURI);
document.getElementById("myimg").src = imageURI;
alert("imageURI : " + imageURI);
var options = new FileUploadOptions();
options.chunkedMode = false;
options.fileKey = "recFile";
var imagefilename = imageURI;
options.fileName = imagefilename;
options.mimeType = "image/jpeg";
var ft = new FileTransfer();
ft.upload(imageURI, "http://192.168.5.109:86/YourService.svc/SaveImage", win, fail, options);
}
function win(r)
{
alert("Sent = " + r.bytesSent);
}
function fail(error)
{
switch (error.code)
{
case FileTransferError.FILE_NOT_FOUND_ERR:
alert("Photo file not found");
break;
case FileTransferError.INVALID_URL_ERR:
alert("Bad Photo URL");
break;
case FileTransferError.CONNECTION_ERR:
alert("Connection error");
break;
}
alert("An error has occurred: Code = " + error.code);
}
Надеюсь, что это поможет
Спасибо
AB
Ответ 4
Ну, это работает для меня.
trustAllHosts: Необязательный параметр, по умолчанию - false. Если установлено значение true, он принимает все сертификаты безопасности. Это полезно, так как Android отклоняет самоподписанные сертификаты безопасности. Не рекомендуется для производство использование. Поддерживается на Android и iOS. (Булево)
Последний параметр добавляет true как логический.
До
var ft = new FileTransfer();
ft.upload(fileURL, encodeURI("http://some.server.com/upload.php"), win, fail, options);
После
var ft = new FileTransfer();
ft.upload(fileURL, encodeURI("http://some.server.com/upload.php"), win, fail, options, true);
Ответ 5
введите ссылку здесь
Это ссылка для 100% рабочего метода для загрузки нескольких изображений на сервер через функцию cordova или phonegap с помощью html java script
Загрузка нескольких изображений на сервер в Кордове