Get file


Что обозначает расширение GET?

автор: Jay Geater, главный писатель по вопросам технологий

Вам кто-то послал по электронной почте файл GET, и вы не знаете, как его открыть? Может быть, вы нашли файл GET на вашем компьютере и вас заинтересовало, что это за файл? Windows может сказать вам, что вы не можете открыть его, или, в худшем случае, вы можете столкнуться с соответствующим сообщением об ошибке, связанным с файлом GET.

До того, как вы сможете открыть файл GET, вам необходимо выяснить, к какому виду файла относится расширения файла GET.

Ответ:

Файлы GET имеют Uncommon Files, который преимущественно ассоциирован с Unknown Apple II File (found on Golden Orchard Apple II CD Rom).

Файлы GET также ассоциированы с Pov-ray for Windows (Persistence of Vision Raytracer Pty Ltd.) и FileViewPro.

Иные типы файлов также могут использовать расширение файла GET. Если вам известны любые другие форматы файлов, использующие расширение файла GET, пожалуйста, свяжитесь с нами, чтобы мы смогли соответствующим образом обновить нашу информацию.


Как открыть ваш файл GET:


Самый быстрый и легкий способ открыть свой файл GET — это два раза щелкнуть по нему мышью. В данном случае система Windows сама выберет необходимую программу для открытия вашего файла GET.

В случае, если ваш файл GET не открывается, весьма вероятно, что на вашем ПК не установлена необходимая прикладная программа для просмотра или редактирования файлов с расширениями GET.

Если ваш ПК открывает файл GET, но в неверной программе, вам потребуется изменить настройки ассоциации файлов в вашем реестре Windows. Другими словами, Windows ассоциирует расширения файлов GET с неверной программой.

We highly recommend scanning your Windows registry for invalid file associations and other related registry issues.

Загрузки программного обеспечения, связанные с расширением файла GET:

  • FileViewPro* (загрузка бесплатной пробной версии)
  • Unknown Apple II File (found on Golden Orchard Apple II CD Rom)

* Некоторые форматы расширений файлов GET можно открыть только в двоичном формате.

Скачать FileViewPro для открытия ваших файлов GET прямо сейчас

Установить необязательные продукты — FileViewPro (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление


GET Инструмент анализа файлов™


Вы не уверены, какой тип у файла GET? Хотите получить точную информацию о файле, его создателе и как его можно открыть?

Теперь можно мгновенно получить всю необходимую информацию о файле GET!

Революционный GET Инструмент анализа файлов™ сканирует, анализирует и сообщает подробную информацию о файле GET. Наш алгоритм (ожидается выдача патента) быстро проанализирует файл и через несколько секунд предоставит подробную информацию в наглядном и легко читаемом формате.†

Уже через несколько секунд вы точно узнаете тип вашего файла GET, приложение, сопоставленное с файлом, имя создавшего файл пользователя, статус защиты файла и другую полезную информацию.

Чтобы начать бесплатный анализ файла, просто перетащите ваш файл GET внутрь пунктирной линии ниже или нажмите «Просмотреть мой компьютер» и выберите файл. Отчет об анализе файла GET будет показан внизу, прямо в окне браузера.

† Инструмент анализа файлов GET использует компоненты стороннего программного обеспечения. Нажмите здесь, чтобы прочитать правовую оговорку.


Установить необязательные продукты — FileViewPro (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

www.solvusoft.com

Чтобы получить содержимое веб-страницы все с удовольствием используют file_get_contents(), например file_get_contents(‘http://www.habrahabr.ru/’). Но я уже давно наблюдаю, что, как дело доходит до того, чтобы отправить POST, разработчики используют либо CURL, либо открывают сокеты. Я не считаю, что это плохо или что не надо так делать, просто для решения простых задач можно использовать простые решения.


Я и сам так раньше делал, пока на наткнулся на понятие контекстов потоковых операций в PHP. Контекст позволяет передать дополнительные параметры потоковому обработчику. Для http например, можно сконфигурировать POST-запрос или передать дополнительные заголовки.

file_get_contents() принимает 3 параметром «контекст», который собственно и конфигурирует сам запрос.
Ниже пример такого запроса или RTFM

<?php
error_reporting(E_ALL);
require_once 'simpletest/unit_tester.php';
require_once 'simpletest/default_reporter.php';

define('PARAM_NAME',  'var');
define('PARAM_VALUE''testData');
define('QUERY',       'var=testData');

/**
 * Набор тестов
 */
class FileGetContentsTest extends UnitTestCase {


    /**
     * Проверить, что пришел POST
     */
    public function testIsPost() {
        $this->assertEqual('POST', $_SERVER['REQUEST_METHOD'],
            'Expected POST request');
        $this->assertTrue(isset($_POST[PARAM_NAME]) && $_POST[PARAM_NAME] == PARAM_VALUE,
            'Expected POST contains ' . QUERY);
    }
}

/**
 * Отправить POST
 */
if (!$_SERVER['QUERY_STRING']) {

    


'header'
 => 'Content-Type: application/x-www-form-urlencoded' . PHP_EOL,
            'content' => QUERY,
        ),
    ));

    // Отправить запрос на себя, чтобы запустить тесты
    // и показать результат выполнения тестов
    echo file_get_contents(
        $file = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}?runTests",
        $use_include_path = false,
        $context);

/**


e>

Следуюшие файловые функции принимают контексты:

  • file
  • fopen
  • readfile
  • file_get_contents
  • file_put_contents

habr.com

here is another (maybe the easiest) way of doing POST http requests from php using its built-in capabilities. feel free to add the headers you need (notably the Host: header) to further customize the request.

note: this method does not allow file uploads. if you want to upload a file with your request you will need to modify the context parameters to provide multipart/form-data encoding (check out http://www.php.net/manual/en/context.http.php ) and build the $data_url following the guidelines on http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2


<?php
/**
make an http POST request and return the response content and headers
@param string $url    url of the requested script
@param array $data    hash array of request variables
@return returns a hash array with response content and headers in the following form:
    array ('content'=>'<html></html>'
        , 'headers'=>array ('HTTP/1.1 200 OK', 'Connection: close', ...)
        )
*/
function http_post ($url, $data)
{
   
$data_url = http_build_query ($data);
   
$data_len = strlen ($data_url);

    return array ('content'=>


n>, 'header'=>"Connection: closernContent-Length: $data_lenrn"
           
, 'content'=>$data_url
           
))))
        ,
'headers'=>$http_response_header
       
);
}
?>

php.net

Прежде всего, первое правило multipart Content-Type — определить границу, которая будет использоваться как разделитель между каждой частью (поскольку, как говорит название, она может иметь несколько части). Границей может быть любая строка, которая не содержится в теле содержимого. Обычно я использую временную метку:

define('MULTIPART_BOUNDARY', '--------------------------'.microtime(true));   

Как только ваша граница определена, вы должны отправить ее с заголовком Content-Type, чтобы сообщить веб-серверу, что ожидать от разделителя:

$header = 'Content-Type: multipart/form-data; boundary='.MULTIPART_BOUNDARY; 

Как только это будет сделано, вы должны создать правильное тело контента, которое соответствует спецификации HTTP и отправленному вами заголовку. Как вы знаете, при отправке файла из формы у вас обычно будет имя поля формы. Мы определим его:

// equivalent to <input type="file" name="uploaded_file"/> define('FORM_FIELD', 'uploaded_file');  

Затем мы создаем тело содержимого:

$filename = "/path/to/uploaded/file.zip"; $file_contents = file_get_contents($filename);   $content = "--".MULTIPART_BOUNDARY."rn".  "Content-Disposition: form-data; name="".FORM_FIELD.""; filename="".basename($filename).""rn".  "Content-Type: application/ziprnrn".  $file_contents."rn";  // add some POST fields to the request too: $_POST['foo'] = 'bar' $content .= "--".MULTIPART_BOUNDARY."rn".  "Content-Disposition: form-data; name="foo"rnrn".  "barrn";  // signal end of request (note the trailing "--") $content .= "--".MULTIPART_BOUNDARY."--rn";   

Как вы можете видеть, мы отправляем заголовок Content-Disposition с расположением form-data вместе с параметром name (имя поля формы) и параметром filename (исходное имя файла). Также важно отправить заголовок Content-Type с соответствующим типом MIME, если вы хотите правильно заполнить $_FILES[]['type'] thingy.

Если у вас было несколько файлов для загрузки, вы просто повторяете процесс с битом $content, с разным FORM_FIELD для каждого файла.

Теперь создайте контекст:

$context = stream_context_create(array(  'http' => array(  'method' => 'POST',  'header' => $header,  'content' => $content,  ) )); 

И выполните:

file_get_contents('http://url/to/upload/handler', false, $context); 

ПРИМЕЧАНИЕ. Нет необходимости кодировать ваш двоичный файл перед его отправкой. HTTP может обрабатывать только двоичные файлы.

qaru.site

Java

Uses the Java client library.

import com.google.api.client.http.GenericUrl; import com.google.api.client.http.HttpResponse; import com.google.api.services.drive.Drive; import com.google.api.services.drive.model.File;  import java.io.IOException; import java.io.InputStream;  // ...  public class MyClass {   // ...   /**  * Print a file's metadata.  *  * @param service Drive API service instance.  * @param fileId ID of the file to print metadata for.  */  private static void printFile(Drive service, String fileId) {   try {  File file = service.files().get(fileId).execute();   System.out.println("Title: " + file.getTitle());  System.out.println("Description: " + file.getDescription());  System.out.println("MIME type: " + file.getMimeType());  } catch (IOException e) {  System.out.println("An error occurred: " + e);  }  }   /**  * Download a file's content.  *  * @param service Drive API service instance.  * @param file Drive File instance.  * @return InputStream containing the file's content if successful,  * {@code null} otherwise.  */  private static InputStream downloadFile(Drive service, File file) {  if (file.getDownloadUrl() != null && file.getDownloadUrl().length() > 0) {  try {  HttpResponse resp =  service.getRequestFactory().buildGetRequest(new GenericUrl(file.getDownloadUrl()))  .execute();  return resp.getContent();  } catch (IOException e) {  // An error occurred.  e.printStackTrace();  return null;  }  } else {  // The file doesn't have any content stored on Drive.  return null;  }  }   // ... }

.NET

Uses the .NET client library.

using Google.Apis.Authentication; using Google.Apis.Drive.v2; using Google.Apis.Drive.v2.Data;  using System.Net; // ...  public class MyClass {   // ...   /// <summary>  /// Print a file's metadata.  /// </summary>  /// <param name="service">Drive API service instance.</param>  /// <param name="fileId">ID of the file to print metadata for.</param>  public static void printFile(DriveService service, String fileId) {  try {  File file = service.Files.Get(fileId).Execute();   Console.WriteLine("Title: " + file.Title);  Console.WriteLine("Description: " + file.Description);  Console.WriteLine("MIME type: " + file.MimeType);  } catch (Exception e) {  Console.WriteLine("An error occurred: " + e.Message);  }  }   /// <summary>  /// Download a file and return a string with its content.  /// </summary>  /// <param name="authenticator">  /// Authenticator responsible for creating authorized web requests.  /// </param>  /// <param name="file">Drive File instance.</param>  /// <returns>File's content if successful, null otherwise.</returns>  public static System.IO.Stream DownloadFile(  IAuthenticator authenticator, File file) {  if (!String.IsNullOrEmpty(file.DownloadUrl)) {  try {  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(  new Uri(file.DownloadUrl));  authenticator.ApplyAuthenticationToRequest(request);  HttpWebResponse response = (HttpWebResponse) request.GetResponse();  if (response.StatusCode == HttpStatusCode.OK) {  return response.GetResponseStream();  } else {  Console.WriteLine(  "An error occurred: " + response.StatusDescription);  return null;  }  } catch (Exception e) {  Console.WriteLine("An error occurred: " + e.Message);  return null;  }  } else {  // The file doesn't have any content stored on Drive.  return null;  }  }   //...  } 

PHP

Uses the PHP client library.

/**  * Print a file's metadata.  *  * @param Google_Service_Drive $service Drive API service instance.  * @param string $fileId ID of the file to print metadata for.  */ function printFile($service, $fileId) {  try {  $file = $service->files->get($fileId);   print "Title: " . $file->getTitle();  print "Description: " . $file->getDescription();  print "MIME type: " . $file->getMimeType();  } catch (Exception $e) {  print "An error occurred: " . $e->getMessage();  } }  /**  * Download a file's content.  *  * @param Google_Service_Drive $service Drive API service instance.  * @param File $file Drive File instance.  * @return String The file's content if successful, null otherwise.  */ function downloadFile($service, $file) {  $downloadUrl = $file->getDownloadUrl();  if ($downloadUrl) {  $request = new Google_Http_Request($downloadUrl, 'GET', null, null);  $httpRequest = $service->getClient()->getAuth()->authenticatedRequest($request);  if ($httpRequest->getResponseHttpCode() == 200) {  return $httpRequest->getResponseBody();  } else {  // An error occurred.  return null;  }  } else {  // The file doesn't have any content stored on Drive.  return null;  } } 

Python

Uses the Python client library.

from apiclient import errors from apiclient import http # ...  def print_file_metadata(service, file_id):  """Print a file's metadata.   Args:  service: Drive API service instance.  file_id: ID of the file to print metadata for.  """  try:  file = service.files().get(fileId=file_id).execute()   print 'Title: %s' % file['title']  print 'MIME type: %s' % file['mimeType']  except errors.HttpError, error:  print 'An error occurred: %s' % error   def print_file_content(service, file_id):  """Print a file's content.   Args:  service: Drive API service instance.  file_id: ID of the file.   Returns:  File's content if successful, None otherwise.  """  try:  print service.files().get_media(fileId=file_id).execute()  except errors.HttpError, error:  print 'An error occurred: %s' % error   def download_file(service, file_id, local_fd):  """Download a Drive file's content to the local filesystem.   Args:  service: Drive API Service instance.  file_id: ID of the Drive file that will downloaded.  local_fd: io.Base or file object, the stream that the Drive file's  contents will be written to.  """  request = service.files().get_media(fileId=file_id)  media_request = http.MediaIoBaseDownload(local_fd, request)   while True:  try:  download_progress, done = media_request.next_chunk()  except errors.HttpError, error:  print 'An error occurred: %s' % error  return  if download_progress:  print 'Download Progress: %d%%' % int(download_progress.progress() * 100)  if done:  print 'Download Complete'  return 

JavaScript

Uses the JavaScript client library.

/**  * Print a file's metadata.  *  * @param {String} fileId ID of the file to print metadata for.  */ function printFile(fileId) {  var request = gapi.client.drive.files.get({  'fileId': fileId  });  request.execute(function(resp) {  console.log('Title: ' + resp.title);  console.log('Description: ' + resp.description);  console.log('MIME type: ' + resp.mimeType);  }); }  /**  * Download a file's content.  *  * @param {File} file Drive File instance.  * @param {Function} callback Function to call when the request is complete.  */ function downloadFile(file, callback) {  if (file.downloadUrl) {  var accessToken = gapi.auth.getToken().access_token;  var xhr = new XMLHttpRequest();  xhr.open('GET', file.downloadUrl);  xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);  xhr.onload = function() {  callback(xhr.responseText);  };  xhr.onerror = function() {  callback(null);  };  xhr.send();  } else {  callback(null);  } }

Go

Uses the Go client library.

import (  "google.golang.org/drive/v2"  "fmt"  "net/http"  "io/ioutil" )  // PrintFile fetches and displays the given file. func PrintFile(d *drive.Service, fileId string) error {  f, err := d.Files.Get(fileId).Do()  if err != nil {  fmt.Printf("An error occurred: %vn", err)  return err  }  fmt.Printf("Title: %v", f.Title)  fmt.Printf("Description: %v", f.Description)  fmt.Printf("MIME type: %v", f.MimeType)  return nil }   // DownloadFile downloads the content of a given file object func DownloadFile(d *drive.Service, t http.RoundTripper, f *drive.File) (string, error) {  // t parameter should use an oauth.Transport  downloadUrl := f.DownloadUrl  if downloadUrl == "" {  // If there is no downloadUrl, there is no body  fmt.Printf("An error occurred: File is not downloadable")  return "", nil  }  req, err := http.NewRequest("GET", downloadUrl, nil)  if err != nil {  fmt.Printf("An error occurred: %vn", err)  return "", err  }  resp, err := t.RoundTrip(req)  // Make sure we close the Body later  defer resp.Body.Close()  if err != nil {  fmt.Printf("An error occurred: %vn", err)  return "", err  }  body, err := ioutil.ReadAll(resp.Body)  if err != nil {  fmt.Printf("An error occurred: %vn", err)  return "", err  }  return string(body), nil }

Objective-C

Uses the Objective-C client library.

#import "GTLDrive.h" // ...  + (void)printFileMetadataWithService:(GTLServiceDrive *)service  fileId:(NSString *)fileId {  GTLQuery *query = [GTLQueryDrive queryForFilesGetWithFileId:fileId];   // queryTicket can be used to track the status of the request.  GTLServiceTicket *queryTicket =  [service executeQuery:query  completionHandler:^(GTLServiceTicket *ticket, GTLDriveFile *file,  NSError *error) {  if (error == nil) {  NSLog(@"Title: %@", file.title);  NSLog(@"Description: %@", file.descriptionProperty);  NSLog(@"MIME type: %@", file.mimeType);  } else {  NSLog(@"An error occurred: %@", error);  }  }]; }  + (void)downloadFileContentWithService:(GTLServiceDrive *)service  file:(GTLDriveFile *)file  completionBlock:(void (^)(NSData *, NSError *))completionBlock {  if (file.downloadUrl != nil) {  // More information about GTMHTTPFetcher can be found on  // <a href="http://code.google.com/p/gtm-http-fetcher">http://code.google.com/p/gtm-http-fetcher</a>  GTMHTTPFetcher *fetcher =  [service.fetcherService fetcherWithURLString:file.downloadUrl];   [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) {  if (error == nil) {  // Success.  completionBlock(data, nil);  } else {  NSLog(@"An error occurred: %@", error);  completionBlock(nil, error);  }  }];  } else {  completionBlock(nil,  [NSError errorWithDomain:NSURLErrorDomain  code:NSURLErrorBadUrl  userInfo:nil]);  } }  // ...

developers.google.com

Описание функции

Функция file get content PHP получает в качестве параметра имя файла или URI и выдает строку. В данном примере приведен код использования. Обращение к функции происходит четыре раза. Первый раз читается файл, который содержит просто текст, второй раз читается другой файл, который, кроме текста, имеет HTML-теги.

Следующая пара вызовов осуществляется через преобразование кодировки. Это не всегда необходимо, но в случаях, когда на выходе образуются странные символы, следует применить преобразование полученной после чтения строки, и русские буквы будут видны. Пример file get contents PHP в браузере будет отображен так, как показано ниже.

Первые два вызова функции не занимаются переводом кодировки в нужный формат, поэтому русские буквы не отображаются. Содержимое обоих файлов (local-1.txt и local-2.txt) одинаковое. Естественно, в обоих файлах есть переводы строки, но браузер их не разбирает. Функция file get content PHP читает всё как есть, но во втором файле есть нужные теги, и строчки отображаются как нужно, а не в одну строку. Данное обстоятельство не существенно, потому как по общему правилу файл читается как есть, и наличие в нем тегов актуально, когда читается HTML-страница, а там есть все необходимое. Однако данное обстоятельство, особенно факт возможного несоответствия кодировки, важно знать.

Другие параметры функции

Если нужно по-особенному что-то прочитать, например, только часть файла, или начинать с какой-то конкретной позиции в нем, можно использовать параметр смещения и количества. Однако функция file get content PHP в некоторых случаях может допустить ошибку, прочитав не то, не в том количестве или не с той позиции. Если читается не локальный файл, то заданное смещение и количество читаемых байт будут действительны. Во всех остальных случаях лучше проконтролировать результат, выдаваемый функцией. Можно задать параметр поиска файла в папке include path и параметр ресурса для чтения потоковых контекстов.

Последовательность параметров такова:

  • имя файла;
  • параметр поиска;
  • параметр ресурса;
  • смещение;
  • количество.

Не желательно использовать параметр поиска, хотя в некоторых случаях это целесообразно. При чтении как локальных, так и удаленных файлов или URI лучше всегда знать, что читается и откуда. Если в URI есть специальные символы, например пробел, URI следует кодировать функцией urlencode.

Чтение файла удаленно

Здесь функция использует аналогично. Нет никаких существенных отличий, за исключением только одного обстоятельства: при первых двух вызовов PHP file get contents ошибка отсутствует.

В третьем вызове читается страница сайта. Выводится эта страница в текущее место браузера, в котором действуют вполне конкретные CSS-правила, но никак не правила открываемого сайта. Поэтому результат кода, который читает URI, не будет соответствовать действительности. Впрочем, чтение обычно преследует цели парсинга, а не отображения их в месте чтения.

Но это обстоятельство следует иметь в виду. Чтение URI — это далеко не содержание сайта, а только конкретный адрес.

Функция чтения и парсинг

При неправильном имени читаемого файла или URI возможна ошибка. Это легко отследить по отсутствию результата чтения. При неправильных других параметрах функция генерирует булево значение FALSE. Обычное использование функции чтения целиком связывается с оптовым заданием параметров сайта. Например, чтение файла конфигурации, данных о пользователях или файла настроек. Во всех таких случаях:

  • результат точно определён;
  • структура читаемых данных тоже.

При чтении URI заранее трудно предсказать, что и как прочитается, и прочитается ли вообще. Важно отчетливо представлять, что далеко не всегда прочитанное следует выводить в браузер. Одно дело обработка информации, другое дело попытка контролировать процесс обработки HTML-содержимого без специальных средств и предосторожности в браузере.

fb.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.