Опубликовать файл на странице .php из Oracle - PullRequest
1 голос
/ 07 декабря 2009

На моем сайте есть скрипт .php, на который наши клиенты могут размещать заказы.

  $destname = CreateUniqueOrderFileName();
  if (is_uploaded_file($_FILES['file']['tmp_name'])) {
    if (move_uploaded_file($_FILES['file']['tmp_name'], $destname))         
      echo "OK";
    else 
      echo "ERROR: move";                  
  }

Поэтому для своих клиентов я написал приложение на C #, и если я загружаю заказ, я делаю что-то вроде этого:

var client = new WebClient();
byte[] response = client.UploadFile("http://mywebsite/order.php", "POST", orderFile);

Но теперь у меня есть клиент, который использует Oracle и хочет разместить заказ с использованием PL / SQL. Я пытаюсь сказать ему, что он должен сделать файл, загруженный через HTTP POST, и использовать multipart / form-data, но он меня не понимает. Возможно, я использую неправильный словарь или не использую стандарты.

У кого-то есть пример того, как опубликовать файл в сценарии .php на PL / SQL, или предложение, где найти дополнительную информацию, загружая файл на веб-страницу .php с клиентом Oracle.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2009

Я думаю, вы можете использовать пакет PL / SQL UTL_HTTP для выполнения HTTP POST

http://awads.net/wp/2005/11/30/http-post-from-inside-oracle/

Другим вариантом может быть использование хранимой процедуры Java

0 голосов
/ 11 декабря 2009

Мы могли бы найти способ выполнить запрос POST, используя multipart / form-data типа контента в соответствии с RFC2388. Поэтому я изменил скрипт .php на что-то вроде этого.

   $fp = fopen('php://input','r');
   $content = stream_get_contents($fp);
   $destname = CreateUniqueOrderFileName();
   $isWritten = @file_put_contents($destname, $content); 
   if($isWritten===false)
   {
     echo "ERROR: could not write file: ".$destname;    
     return;                
   }

Используя это, мы можем разместить заказ, используя библиотеку UTL_HTTP для выполнения HTTP POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...