菜鸟教程小白 发表于 2022-12-13 10:01:46

php - 请求失败 : unacceptable content-type: image/jpg using AFNetworking 2. 5


                                            <p><p>我知道这个问题已经在堆栈溢出中被问过好几次了。但我仍然对此感到很困惑。我试过用</p>

<pre><code>manager.responseSerializer.acceptableContentTypes = ;
</code></pre>

<p>但在我添加 header("Content-type:application/json"); 之前我仍然收到错误消息在我的 php 文件中。但是我的 php 文件中没有 jason 结构。 </p>

<p>我的ios端是:</p>

<pre><code>AFHTTPRequestSerializer *serializer = ;

NSError *__autoreleasing* error;
// 2. Create an `NSMutableURLRequest`.
NSMutableURLRequest *request = [serializer multipartFormRequestWithMethod:@&#34;POST&#34; URLString:@&#34;http://192.168.199.118/search.php&#34; parameters:nil constructingBodyWithBlock:^(id&lt;AFMultipartFormData&gt; formData) {
    [formData appendPartWithFileData:imageData
                              name:@&#34;uploadedfile&#34;
                            fileName:@&#34;image.jpg&#34;
                            mimeType:@&#34;image/jpg&#34;];
} error:(NSError *__autoreleasing *)error];

AFHTTPRequestOperationManager *manager = ;
manager.responseSerializer = ;

manager.responseSerializer.acceptableContentTypes = ;

AFHTTPRequestOperation *operation =
[manager HTTPRequestOperationWithRequest:request
                                 success:^(AFHTTPRequestOperation *operation, id responseObject) {
                                     NSLog(@&#34;Success %@&#34;, responseObject);


                                 } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                                     NSLog(@&#34;Failure %@&#34;, error.description);
                                     if (error.code == -1001) {
                                       ;

                                     }
                                 }];
</code></pre>

<p>我的php端是:</p>

<pre><code>&lt;?php

#function for streaming file to client
function streamFile($location, $filename, $mimeType=&#39;image/jpg&#39;)
{ if(!file_exists($location))
{ header (&#34;HTTP/1.0 404 Not Found&#34;);
    return;
}

//header(&#34;Content-Type: $mimeType&#34;);
header(&#34;Content-type:application/json&#34;);
readfile($location);

}

#**********************************************************
#Main script
#**********************************************************
header(&#34;Content-type:application/json&#34;);
#&lt;1&gt;set target path for storing photo uploads on the server
$photo_upload_path = &#34;upload/&#34;;
$photo_upload_path = $photo_upload_path.basename( $_FILES[&#39;uploadedfile&#39;][&#39;name&#39;]);
$photo_upload_indicator_path = &#34;upload/image_ready&#34;;

#&lt;2&gt;set target path for storing result on the server
$downloadFileName = &#39;processed_&#39;;
$processed_photo_output_path = &#34;output/processed_&#34;;
$processed_photo_output_path = $processed_photo_output_path.basename( $_FILES[&#39;uploadedfile&#39;][&#39;name&#39;]);
$processed_photo_output_indicator_path = &#34;output/result_ready&#34;;
$downloadFileName = $downloadFileName.basename( $_FILES[&#39;uploadedfile&#39;][&#39;name&#39;]);

#&lt;3&gt;modify maximum allowable file size to 10MB and timeout to 300s
ini_set(&#39;upload_max_filesize&#39;, &#39;10M&#39;);
ini_set(&#39;post_max_size&#39;, &#39;10M&#39;);
ini_set(&#39;max_input_time&#39;, 300);
ini_set(&#39;max_execution_time&#39;, 300);

#&lt;4&gt;Get and stored uploaded photos on the server
if(copy($_FILES[&#39;uploadedfile&#39;][&#39;tmp_name&#39;], $photo_upload_path)) {

    #&lt;5&gt;signal that the image is ready
    $handle = fopen($photo_upload_indicator_path, &#39;w&#39;);
    fprintf($handle, &#39;%s&#39;, $photo_upload_path);
    fclose($handle);

    #&lt;6&gt;wait until the result is ready
    while (!file_exists($processed_photo_output_indicator_path))
    {
      usleep(1000000);
    }
    usleep(1000000);
    unlink($processed_photo_output_indicator_path);

    #&lt;7&gt;stream processed photo to the client
    streamFile($processed_photo_output_path, $downloadFileName,&#39;image/jpg&#39;);
} else{
    echo &#34;There was an error uploading the file to $photo_upload_path !&#34;;
}

?&gt;
</code></pre>

<p> header ("Content-type:application/json");帮助我解决问题。但我不知道为什么。
如果删除此代码,我将始终收到“请求失败错误”。如果我想从带有图像的 php 服务器接收一些信息,哪种方式是最好的?非常感谢您的任何建议。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您的 PHP 脚本在注释 <code>#Main script</code></p> 正下方的行中设置了一个 <code>Content-type</code>header

<p>您应该删除它并使用正确的图像类型进行响应,<code>image/jpeg</code>(包括“e”)。 AFNetworking 附带一个响应序列化程序,<a href="http://cocoadocs.org/docsets/AFNetworking/2.5.0/Classes/AFImageResponseSerializer.html" rel="noreferrer noopener nofollow"><code>AFImageResponseSerializer</code></a> ,它将自动将 Content-type <code>image/jpeg</code> 的响应解码为 UIImage:</p>

<pre><code>AFHTTPRequestOperationManager *manager = ;
manager.responseSerializer = ;

AFHTTPRequestOperation *operation =
[manager HTTPRequestOperationWithRequest:request
                                 success:^(AFHTTPRequestOperation *operation, UIImage *responseImage) {
                                     NSLog(@&#34;Success %@&#34;, responseImage);


                                 } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                                     NSLog(@&#34;Failure %@&#34;, error.description);
                                     if (error.code == -1001) {
                                       ;

                                     }
                                 }];
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于php - 请求失败 : unacceptable content-type: image/jpg using AFNetworking 2. 5,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/27757988/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/27757988/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: php - 请求失败 : unacceptable content-type: image/jpg using AFNetworking 2. 5