Вы можете использовать функции empty () и isset (). Если вы хотите, чтобы он работал с разными файлами, просто измените action='yourphp.php'
на html, который я вам даю, и store the PHP script
на этот файл yourphp.php
. Также вам нужно изменить index.html
на index.php
, чтобы активировать функции PHP.
PHP
<?php
error_reporting(0);
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: yoursite.com';
$to = 'contact@yoursite.com';
$subject = 'Customer Inquiry';
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
if ($_POST['submit']){
if (!(empty($_POST['name']))) {
if (!(empty($_POST['email']))){
if (!(empty($_POST['message']))){
mail ($to, $subject, $body, $from);
echo '<p>Your message has been sent!</p>';
}else{
echo '<p>Fill your message please.</p>';}
}else {
echo '<p>Fill your email please.</p>';}
}else{
echo '<p>Fill your name please.</p>';}
}else{
echo '<p>Fill the form.</p>';}
?>
HTML
<html>
<form method="post" action="?">
<table>
<tr><td>Name</td><td><input type='text' name='name' id='name'/></td></tr>
<tr><td>Email</td><td><input type='text' name='email' id='email'/></td></tr>
<tr><td>Message</td><td><input type='text' name='message' id='message'/></td></tr>
<tr><td></td><td><input type='submit' name='submit' id='submit'/></td></tr>
</table>
</form>
</html>
С наилучшими пожеланиями!
Если вам абсолютно нужна локальная копия файла, вам нужно будет открыть InputStream
копию содержимого в локальный файл, в котором вы знаете путь, а затем перейти оттуда. Sidenote: Guava ByteStreams#copy
- это простой способ выполнить это.
Конечно, этот файл больше не поддерживается исходным источником Uri, поэтому я не думаю, что это то, что вы хотите. Вместо этого вы должны работать с API-интерфейсом Uri. Взгляните на Storage Access Framework
Изменить
Вот как вы можете получить InputStream
из вашего Uri
InputStream inputStream = getContentResolver().openInputStream(uri);
Как я могу получить путь к файлу из этого типа URI контента?
blockquote>У вас нет, так как нет никакого файла вообще за
Uri
, не говоря уже о том, к которому вы можете получить доступ. ЭтоUri
может указывать на:
- Локальный файл на внешнем хранилище
- Локальный файл на внутренней памяти для другого приложения
- Локальный файл на съемном носителе
- Локальный файл, который зашифрован и должен быть дешифрован на лету
- Поток байтов, хранящихся в столбце
BLOB
в базе данных- Часть содержимого, которое должно быть загружено другим приложением первым
- ... и т. д.
Все другие приложения, такие как Facebook, Google+ это делает
blockquote>Нет, это не так. Они используют
ContentResolver
и:
openInputStream()
для чтения в байтах, связанных с содержимымgetType()
, чтобы получить тип MIME, связанный с содержимымquery()
иOpenableColumns
, чтобы получить размер и отображаемое имя, связанные с контентом
InputStream
для установки содержимого S3Object
. Если это так, вам не нужен файл. Вам просто нужно InputStream
из openInputStream()
.
– CommonsWare
8 March 2016 в 20:01
InputStream
( github.com/aws/aws-sdk-android/blob/master/aws-android-sdk-s3/… ). Я обновил свой ответ, чтобы включить, как получитьInputStream
– Scott Tomaszewski 8 March 2016 в 20:06