Android Html5/java 应用程序:mosync gallery upload&Send Email



我试图自定义你可以找到的Mosync照片库样本这里和这里

这是一个Html/java应用程序,可以拍摄快照,然后通过php文件(在本例中文件为upload.php)将拍摄的照片上传到web服务器

一切对我来说都很好,但我想添加一个电子邮件字段,并要求用户在上传之前输入他的电子邮件地址到这个字段。我想发送这封电子邮件附带图片,但希望在上传完成后在服务器端(php)这样做。

我试图添加一个邮件功能(具有预定义的sendto地址和链接到图片)到upload.php文件,它的工作原理,但我不能得到设备上的返回状态消息告诉用户,上传是完整的。这是令人愉快的,因为用户不知道进程是否完成

我在不同的步骤上阻塞:1:如何恢复用户输入的email地址,并将其传递给upload.php2:如何将上传的图片添加为附件并发送给用户3:如何保持状态信息在设备上显示?

这里有人遇到过同样的问题吗?有人用过这个Mosync应用吗?

谢谢你的帮助

在upload.php文件下面使用:

<?php
ini_set("display_errors", "1");
ini_set("log_errors", "1");
error_reporting(-1);

function mylog($message)
{
$file = 'mylog.txt';
// Open the file to get existing content
$current = file_get_contents($file);
// Append a line to the file
$current .= "$messagen";
// Write the contents back to the file
file_put_contents($file, $current);
}
function uploadPhoto()
{
$targetPath = "test/" . basename($_FILES["file"]["name"]);
if (fileIsOK($_FILES["file"]))
{
    $success = move_uploaded_file($_FILES["file"]["tmp_name"], $targetPath);
    if ($success)
    {
        echo "The file " . basename($_FILES["file"]["name"]) .
        " has been uploaded";
    }
    else
    {
    echo "There was an error uploading the file";
    }
}
else
{
echo "Not a valid image file";
}
 }
function fileIsOK($file)
{
return $file["size"] < 1500000
    && fileIsImage($file["name"]);
}
function fileIsImage($path)
{
return endsWith($path, ".jpeg")
    || endsWith($path, ".jpg")
    || endsWith($path, ".png");
}
function endsWith($haystack, $needle)
{
$expectedPosition = strlen($haystack) - strlen($needle);
return strripos($haystack, $needle, 0) === $expectedPosition;
}
function getPhotoURLs()
{
/*// For debugging.
$urls = getLastTenPhotoURLs();
foreach ($urls as $url)
{
    echo "<a href='$url'>$url</a><br/>n";
}*/
echo getPhotoURLsAsJSON();
}
function getPhotoURLsAsJSON()
{
$urls = getLastTenPhotoURLs();
return json_encode($urls);
}

// Gets last TEN photo urls.
function getLastTenPhotoURLs()
{
$baseURL = "http:THE URL WHERE PHOTOS WILL BE POSTED";
$baseDir = "test/";
$files = array();
// Add files to table using last mod time as key.
if ($handle = opendir($baseDir))
{
    while (false !== ($file = readdir($handle)))
    {
        if ("." != $file && ".." != $file)
        {
            $files[filemtime($baseDir . $file)] = $file;
        }
    }
    closedir($handle);
}
// Sort by mod time.
ksort($files);
// Last ones first.
$files = array_reverse($files);
// List if URLs.
$urls = array();
// Create a list of URLs to the most recent files.
$fileCounter = 0;
foreach ($files as $file)
{
    ++$fileCounter;
    // We only get TEN recent files (100 is too many!).
    if ($fileCounter > 10)
    {
        // TODO: Move excessive files to an archive directory?
        break;
    }
    array_push($urls, $baseURL . $file);
}
return $urls;
}
function sendHTMLemail($HTML,$from,$to,$subject)
{
$url="http:THE URL OF THE POSTED PHOTOS;
$mailto .= 'THE EMAIL OF THE USER';
$HTML="
<table style='font-size:13px' width='700' border='0' cellspacing='0' cellpadding='3'>
<tr>
<td colspan='2'>Dear friend,<br></td>
</tr>
<tr>
  <td colspan='2' bgcolor='#ffffff'>Attached, you will find the picture taken during our     last event.</strong></td>    
</tr>
<tr>
  <td colspan='2' bgcolor='#ffffff' width='250' >link to the <a  href=".$url.">gallery</a></td>      
</tr>    
</table>";
$from='<noreply@noreply.be>';
$subject='Picture';
$to= $mailto;
$headers = "From: $fromrn"; 
$headers .= "MIME-Version: 1.0rn"; 
$headers .= //"--$boundaryrn".
            "Content-Type: text/html; charset=ISO-8859-1rn";
            //"Content-Transfer-Encoding: base64rnrn"; 
             mail($to,$subject,$HTML,$headers);
}

// If file data is posted then upload the file,
// else get the list of image urls.

if (isset($_FILES["file"]))
{
sendHTMLemail($HTML,$from,$to,$subject);
uploadPhoto();  

}
else
{
getPhotoURLs();
}
?>

1:如何将邮箱地址传递给upload.php?

首先,从HTML页面的字段中获取电子邮件地址。我假设您在page-camera.html中添加了一个输入字段。修改以下调用以传递来自邮件地址字段的值:

mosync.nativeui.callJS(
  mosync.nativeui.MAIN_WEBVIEW,
  "app.uploadPhoto('" + mFileURL + "','" + emailAddress + "')");

这将调用index.html中的app.uploadPhoto函数,并使用带有邮件地址的新额外参数,因此它也需要修改。而不是使用选项。参数= null;使用如下内容:

app.uploadPhoto = function(fileURL, emailAddress)
{
  var options = new FileUploadOptions();
  options.fileKey = "file";
  options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
  options.mimeType = app.getMimeType(options.fileName);
  //options.params = null;
  options.params = { email: emailAddress };
  // ... and the rest of the code for the function.
}
参数表的一般形式如下:
options.params = {param1: "value1", param2: "value2"};
然后在PHP脚本中,您可以像这样访问电子邮件地址:
$emailAddress = $_POST["email"];

2:上传的图片如何添加为附件发送给用户?

也许这些问题能帮到你:

在邮件正文中插入图像PHP发送电子邮件与图像如何在邮件中使用php附加和显示图像?

3:如何保持状态信息在设备上显示?

可能是PHP脚本中有一个错误,导致它失败,并且从未执行uploadPhoto。你能调试一下,看看是不是这样吗?

你返回的是echo输出的字符串,它将在应用程序中传递给JavaScript。

当前PhotoGallery应用程序不显示这个字符串,但它应该显示。在index.html中,而不是使用:

alert("Photo uploaded");

应该用

alert(result.response);

通过这种方式,您可以检查结果并传回数据,如果您希望直接将结果字符串显示给用户

相关内容

  • 没有找到相关文章

最新更新