Я новичок в php и мне нужна помощь со скриптом.не могу понять, почему запись не работает, когда open работает просто отлично.Файл, который я получаю, архивируется с использованием - (NSData *)compress:(NSData *)
из этого примера , в котором используется библиотека libz.dylib.
код:
<?php
error_reporting(E_ALL);
$dir = "upload/";
if(!file_exists($dir)){
mkdir($dir);
}
$target = $dir . basename($_FILES['uploaded']['name']);
$zip = $target . ".gz";
$file = $target . ".jpeg";
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $zip))
{
$arr = gzfile($zip);
if(is_writable($dir)){
if(! $fh = fopen($file, 'w')){
echo "NO - cannot open file ($file)";
exit;
}
foreach($arr as $value){
if(fwrite($fh, $value) === FALSE){
echo "NO - failed to write to file ($file)";
exit;
}
}
fclose($fh);
echo "YES - successfully written to file ($file)";
}
else{
echo "NO - folder ($dir) not writable";
}
}
else {
echo "NO - unable to move_uploaded_file";
}
?>
, декомпрессия не выполняетсяРабота.почтовый запрос также такой же, как в примере выше.Кто-нибудь знает, что не так?какое сжатие использует метод сжатия в примере?(выкачать или сжать или что-то еще)
код поста выглядит так:
- (NSURLRequest *)postRequestWithURL: (NSURL *)url
data: (NSData *)data // IN
boundry: (NSString *)boundry // IN
{
// from http://www.cocoadev.com/index.pl?HTTPFileUpload
NSMutableURLRequest *urlRequest =
[NSMutableURLRequest requestWithURL:url];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:
[NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundry]
forHTTPHeaderField:@"Content-Type"];
NSMutableData *postData =
[NSMutableData dataWithCapacity:[data length] + 512];
[postData appendData:
[[NSString stringWithFormat:@"--%@\r\n", boundry] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:
[[NSString stringWithFormat:
@"Content-Disposition: form-data; name=\"%@\"; filename=\"test%d\"\r\n", FORM_FLE_INPUT, counter++]
dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:
[@"Content-Type: application/gzip\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:
[@"Content-Encoding: gzip\r\n\r\n"dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:data];
[postData appendData:
[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundry] dataUsingEncoding:NSUTF8StringEncoding]];
[urlRequest setHTTPBody:postData];
return urlRequest;
}
в основном так же, как в примере с cocoadev, но я добавил
[postData appendData: [@"Content-Type: application/gzip\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData: [@"Content-Encoding: gzip\r\n\r\n"dataUsingEncoding:NSUTF8StringEncoding]];
, потому что хотя я это помог бы gfile($file)
, но когда я пытаюсь сжать .gz в терминале, я все равно получаю ошибку gzip: upload / test1.gz: не в формате gzip
Я также читал на этом сайте , что, если я добавлю Content-Type = gzip (как я делаю выше) к запросу HTTP Post, Integration Appliance распакует HTTPсообщение тела, но я не могу заставить это работать.(Я пробовал это с очень простым php-скриптом, который есть в примере от cocoadev, так как мне не нужен gzfile()
-материал в моем php-скрипте)