Я сталкиваюсь с некоторыми проблемами, загружая изображение в ведро S3 и получая ссылку на доступ к загруженному изображC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Я сталкиваюсь с некоторыми проблемами, загружая изображение в ведро S3 и получая ссылку на доступ к загруженному изображ

Сообщение Anonymous »

Я сталкиваюсь с некоторыми проблемами, загружая изображение в ковш S3 и получаю ссылку на доступ к загруженному изображению, используя веб -API ASP.net Core 8, написанный в C#. < /p>
на моей локальной машине (Windows), API загружает изображение и правильно извлекает ссылку. Однако при развертывании на сервере AWS Lambda API возвращает 200 ответа, но загруженное изображение повреждено. Ссылка доступа создается, но изображение не открывается должным образом. Как это исправить? < /P>

Код: Выделить всё

public string SendFilesToS3(string fileName, string keyName, string basicPath, string bucketName, string accessKey, string secretKey, string region, MemoryStream memoryStream)
{
string link = null;
string objKeyName = Path.Combine(keyName, fileName).Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);

if (basicPath != null && bucketName != null && accessKey != null && secretKey != null && region != null && objKeyName != null)
{
using (IAmazonS3 client = new AmazonS3Client(accessKey, secretKey, RegionEndpoint.GetBySystemName(region)))
{
PutObjectRequest request;
string objectPath = basicPath + bucketName;
request = new PutObjectRequest
{
BucketName = bucketName,
CannedACL = S3CannedACL.PublicRead,
Key = string.Format(objKeyName),
InputStream = memoryStream
};

PutObjectResponse response = client.PutObjectAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();

if (response.HttpStatusCode.Equals(HttpStatusCode.OK))
link = Path.Combine(objectPath, objKeyName).Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
}
}

return link;
}
< /code>
Другой метод < /p>
public string SendFilesToS3Path(string fileName, string keyName, string basicPath, string bucketName, string accessKey, string secretKey, string region, MemoryStream memoryStream, string ContentType)
{
string link = null;

string objKeyName = $"{keyName.TrimEnd('/')}/{fileName}".Replace("\\", "/");

if (!string.IsNullOrEmpty(bucketName) &&
!string.IsNullOrEmpty(accessKey) &&
!string.IsNullOrEmpty(secretKey) &&
!string.IsNullOrEmpty(region) &&
!string.IsNullOrEmpty(objKeyName))
{
try
{
using (var client = new AmazonS3Client(accessKey, secretKey, RegionEndpoint.GetBySystemName(region)))
{
var request = new PutObjectRequest
{
BucketName = bucketName,
Key = objKeyName,
InputStream = memoryStream,
ContentType = ContentType,
CannedACL = S3CannedACL.PublicRead
};

var response = client.PutObjectAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();
string objectPath = basicPath + bucketName;

if (response.HttpStatusCode == HttpStatusCode.OK)
{
link = $"{objectPath}/{objKeyName}";
}
}
}
catch (Exception ex)
{
Console.WriteLine("S3 Upload Error: " + ex.Message);
}
}

return link;
}
Эти два метода работают на моей локальной машине, но не на сервере.
Это образец изображения для сервера side get link
prc = "/prc ="/https://i.sstatic.net/tipqtqg. /> Как решить эту проблему? < /p>

Подробнее здесь: https://stackoverflow.com/questions/795 ... ing-the-ac
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»