如何处理json响应&在window.open中都有文件?

时间:2018-06-04 11:32:32

标签: javascript node.js reactjs express

我正在使用window.open(来自React的jsx文件)进行文件下载:

function downloadFile(documentName, event) {
    var response = window.open('/downloadViewDocument/'+ documentName, "_self");
 }

从node / express我返回的文件如下:

 var document = __dirname + "/../../attachments/" + req.params.documentName.trim();
    fs.stat(document, function(err, stat) {
        if(err == null) {
            console.log('File exists');
            res.setHeader("Content-Disposition","attachment; filename=\"" + req.params.documentName.trim() + "\"");
            var filestream = fs.createReadStream(document);
            filestream.pipe(res);
        } else if(err.code == 'ENOENT') {
            // file does not exist
            **res.json({success: true, msg: 'File Does Not Exist!'});**
        } else {
            **res.json({success: true, msg: 'Error Occured, Please Try Again!'});**
        }
    });

请注意,在上面的代码中出现错误,我将返回JSON对象。
如果找到文件,则会下载。
但是如果找不到文件我想从msg中读取并想向用户显示正确的错误消息。
我看不到window.open的任何选项来读取回复。还有其他办法吗?

1 个答案:

答案 0 :(得分:-1)

最简单的方法是使用$inbox = imap_open($hostname,$username,$password) or die('Cannot connect: ' . imap_last_error()); $emails = imap_search($inbox,'SINCE "'.date("d-M-y",strtotime("-3 days")).'"',SE_UID); if($emails) { rsort($emails); foreach($emails as $email_number) { echo "<h1>".$email_number."</h1>"; $overview = imap_fetch_overview($inbox,$email_number, FT_UID); if($overview[0]->seen) imap_clearflag_full($inbox,$email_number,"//Seen"); else imap_clearflag_full($inbox,$email_number,"//Unseen"); $structure = imap_fetchstructure($inbox,$email_number, FT_UID); if(isset($structure->parts)){ $flattenedParts = flattenParts($structure->parts); echo "<pre>"; print_r($flattenedParts); echo "</pre>"; echo "</br>"; getmsg($inbox, $email_number); echo "<p>".htmlspecialchars_decode(utf8_decode($plainmsg))."</p>"; }else{ $string_email = utf8_decode(imap_body($inbox, $email_number, FT_UID)); $string_email= strip_tags($string_email); $string_email = html_entity_decode($string_email,ENT_QUOTES); echo "<p>".$string_email."</p>"; } } } imap_close($inbox); 打印错误消息。

还有很多其他解决方案,但如果我正确理解您的问题,您只需要以简单的方式将错误消息打印到客户端。