0

直升机,

我用 html 制作了一个简单的页面,其中有一个按钮,用于从我的电脑中选择一个文件并可以上传它。

     <div>
         <input  type="submit" name="my_file" id="my-file"></input>
    </div>

我希望它能够上传一个特殊的文件,如果用户上传了一个错误的文件,它会报告 http 错误(402)。我用 curl post 完成了它,如下所示:

    curl -i -F file=@my.license

根据:http ://ariejan.net/2010/06/07/uploading-files-with-curl/ 所以这里上传的文件将被发布到后端,如果文件没问题,它将被上传,否则它会发送错误。现在我的问题是如何从后端产生这个 402 http 错误?它是自动运行的服务器端,还是我应该在文件不正确时激活此错误?

谢谢,

4

2 回答 2

1

如果我正确理解了这个问题,上传文件后服务器将验证文件,如果文件正常响应 200 OK 或者文件无效,则发送 402 响应。

您的脚本必须将标题写入输出。在不知道您在服务器上运行什么的情况下,我无法提供更多。以下假设 PHP:

如果您将文件上传到 php 脚本,那么 php 有

void header ( string $string [, bool $replace = true [, int $http_response_code ]] ) 

http://php.net/manual/en/function.header.php

例如。header('HTTP/1.1 402 Payment Required');

你确定402是你想要的吗?W3有一个 HTTP 状态代码列表,也许也可以看看那里。

也请使用适当的标签进行标记。

于 2013-08-12T00:11:59.923 回答
0

上传要在服务器端验证的文件应该是一个后备选项。您可以在发送之前验证文件。您甚至可以禁用文件类型。

只允许选择某些文件:

<input type="file" accept="image/*"  type="submit" name="my_file" id="my-file" />

该示例将只允许在文件打开对话框中选择图像。有关内容类型(mime-types)的列表:http ://www.iana.org/assignments/media-types

您也可以使用FileListFile来检查文件类型。看看它在行动:http: //jsfiddle.net/Y6MjA/4/

var file = document.getElementById('my-file').files[0];
switch(file.type)
{
    case 'image/png':
    case 'image/gif':
    case 'image/jpeg':
        alert('Valid File Type');
        //success: upload your file via curl
        break;
    default:
        alert('Invalid File Type');
}
于 2013-08-12T00:40:59.787 回答