wbc
2025-04-23 2f11a821259c77d8e48bb0b83e7f01b0f529b10a
MESApplication/Controllers/QC/SJController.cs
@@ -1,4 +1,5 @@
using System.Dynamic;
using System.Net;
using MES.Service.Dto.service;
using MES.Service.Modes;
using MES.Service.service.QC;
@@ -398,4 +399,134 @@
            return ResponseResult.ResponseError(ex);
        }
    }
    //FTPLIST
    [HttpPost("ftpList")]
    public async Task<ResponseResult> getFtpList([FromBody] JObject data)
    {
        var itemno = data["itemno"]?.ToString();
        if (itemno == null || itemno =="") return new ResponseResult
        {
            status = 1,
            message = "未找到该产品的文件信息",
            data = "未找到该产品的文件信息"
        };
        var ftpAddress = "ftp://192.168.1.223:21";
        var username = "administrator";
        var password = "Rdyl8888";
        var remotePath = "PQC/SJ/" + itemno;
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var ftpFiles = new SJService().GetFtpFileList(ftpAddress, username, password, remotePath);
            resultInfos.tbBillList = ftpFiles;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("download")]
    public async Task<IActionResult> DownloadFile([FromBody] JObject data)
    {
        var fileName = data["fileName"]?.ToString();
        var itemno   = data["itemno"]?.ToString();
        var ftpAddress = "ftp://192.168.1.223:21";
        var username = "administrator";
        var password = "Rdyl8888";
        var remotePath = "PQC/SJ/" + itemno;
        try
        {
            byte[] fileData = new SJService().DownloadFtpFile(ftpAddress, username, password, $"{remotePath}/{fileName}"); // 拼接完整路径
            // 生成临时访问 URL(示例逻辑)
            var tempFileId = Guid.NewGuid().ToString();
            // 将文件缓存到临时目录(实际项目需考虑清理机制)
            var tempPath = Path.Combine(Path.GetTempPath(), tempFileId);
            System.IO.File.WriteAllBytes(tempPath, fileData);
            // 返回可直接访问的 URL
            var baseUrl = $"{Request.Scheme}://{Request.Host}";
            return Ok(new ResponseResult
            {
                status = 0,
                message = "OK",
                data = new
                {
                    url = $"{baseUrl}/api/SJ/downloadTemp?fileId={tempFileId}&fileName={fileName}",
                    mimeType = GetMimeType(fileName)
                }
            });
        }
        catch (Exception ex)
        {
            return BadRequest(ResponseResult.ResponseError(ex));
        }
    }
    private string GetMimeType(string fileName)
    {
        string mimeType = "application/octet-stream";
        if (fileName.EndsWith(".jpg") || fileName.EndsWith(".jpeg"))
        {
            mimeType = "image/jpeg";
        }
        else if (fileName.EndsWith(".png"))
        {
            mimeType = "image/png";
        }
        else if (fileName.EndsWith(".gif"))
        {
            mimeType = "image/gif";
        }
        else if (fileName.EndsWith(".pdf"))
        {
            mimeType = "application/pdf";
        }
        else if (fileName.EndsWith(".doc") || fileName.EndsWith(".docx"))
        {
            mimeType = "application/msword";
        }
        else if (fileName.EndsWith(".xls") || fileName.EndsWith(".xlsx"))
        {
            mimeType = "application/vnd.ms-excel";
        }
        return mimeType;
    }
   [HttpGet("downloadTemp")]
    public IActionResult DownloadTemp(string fileId, string fileName)
        {
            var tempPath = Path.Combine(Path.GetTempPath(), fileId);
            if (!System.IO.File.Exists(tempPath))
            {
                return NotFound();
            }
            var fileBytes = System.IO.File.ReadAllBytes(tempPath);
            return File(fileBytes, GetMimeType(fileName), fileName);
        }
}