Несколько путей к одному изображению & mdash; Зачем? [Дубликат]

Вы можете использовать функции 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>

С наилучшими пожеланиями!

4
задан Priya Mall 8 March 2016 в 16:02
поделиться

2 ответа

Если вам абсолютно нужна локальная копия файла, вам нужно будет открыть InputStream копию содержимого в локальный файл, в котором вы знаете путь, а затем перейти оттуда. Sidenote: Guava ByteStreams#copy - это простой способ выполнить это.

Конечно, этот файл больше не поддерживается исходным источником Uri, поэтому я не думаю, что это то, что вы хотите. Вместо этого вы должны работать с API-интерфейсом Uri. Взгляните на Storage Access Framework

Изменить

Вот как вы можете получить InputStream из вашего Uri

InputStream inputStream = getContentResolver().openInputStream(uri);
1
ответ дан Scott Tomaszewski 22 August 2018 в 14:42
поделиться
  • 1
    Нет, ты прав. Может, это то, чего я хочу! Я должен прикрепить изображение к сообщению и загрузить в s3 bucket в моем приложении. И для этого мне понадобится путь к файлу. Спасибо за предложение, попробуем это. Будет ли какая-то проблема с производительностью, если с этим подходом нужно добавить несколько изображений? – Priya Mall 8 March 2016 в 19:56
  • 2
    Как упоминалось в @CommmonsWare, вы можете загрузить InputStream ( github.com/aws/aws-sdk-android/blob/master/aws-android-sdk-s3/… ). Я обновил свой ответ, чтобы включить, как получить InputStream – Scott Tomaszewski 8 March 2016 в 20:06
  • 3
    Если это правильный ответ, можете ли вы его принять? @Priya – Scott Tomaszewski 9 March 2016 в 21:58
  • 4
    Готово. Спасибо! – Priya Mall 10 March 2016 в 06:38
  • 5
    Я использовал openInputStream, и он отлично работал. Но я тестировал его снова и теперь его бросая Security Exception.Facing точно такую ​​же проблему, как этот вопрос SO. Не могли бы вы помочь? – Priya Mall 9 May 2016 в 14:19

Как я могу получить путь к файлу из этого типа URI контента?

У вас нет, так как нет никакого файла вообще за Uri, не говоря уже о том, к которому вы можете получить доступ. Это Uri может указывать на:

  • Локальный файл на внешнем хранилище
  • Локальный файл на внутренней памяти для другого приложения
  • Локальный файл на съемном носителе
  • Локальный файл, который зашифрован и должен быть дешифрован на лету
  • Поток байтов, хранящихся в столбце BLOB в базе данных
  • Часть содержимого, которое должно быть загружено другим приложением первым
  • ... и т. д.

Все другие приложения, такие как Facebook, Google+ это делает

Нет, это не так. Они используют ContentResolver и:

  • openInputStream() для чтения в байтах, связанных с содержимым
  • getType(), чтобы получить тип MIME, связанный с содержимым
  • query() и OpenableColumns, чтобы получить размер и отображаемое имя, связанные с контентом
3
ответ дан CommonsWare 22 August 2018 в 14:42
поделиться
  • 1
    Спасибо за объяснение концепции, теперь я понимаю это ясно. На самом деле, я должен прикрепить изображение к сообщению и загрузить в s3 bucket в моем приложении. И для этого мне понадобится путь к файлу. Я думаю, я должен попробовать @ предложение Скотти, что вы предлагаете? – Priya Mall 8 March 2016 в 19:52
  • 2
    @Priya: Кажется, что SDK Amazon S3 поддерживает InputStream для установки содержимого S3Object . Если это так, вам не нужен файл. Вам просто нужно InputStream из openInputStream(). – CommonsWare 8 March 2016 в 20:01
  • 3
    Да, ты прав. Спасибо! Думаю, может принять только один ответ не оба. Так что просто комментируя ... Принял ответ :) – Priya Mall 10 March 2016 в 06:37
  • 4
    Я использовал openInputStream, и он отлично работал. Но я тестировал его снова и теперь его бросая Security Exception.Facing точно такую ​​же проблему, как этот вопрос SO. Не могли бы вы помочь? – Priya Mall 9 May 2016 в 13:40
Другие вопросы по тегам:

Похожие вопросы: