为什么fileupload.saveas时图像图标为空白/白色

时间:2011-12-30 05:50:56

标签: asp.net vb.net image file-upload

我使用vb.net

我试图进行文件上传,我想将图像保存到图像文件夹,但是,图像不知道出现在我指示的目录中

如果我点击“显示所有文件”,图像会出现,但图像图标为空白或白色,如下图所示

所以我点击该图片并点击“将其包含在项目中”,然而,不应该是我每次上传图片的情况,我需要再次重做

所以当我上传图片而不是手动点击要包含的图片时,我应该如何允许不显示白色图标并始终显示在上传文件夹中?

这是我的代码

 Protected Sub uploadImage()
    Dim filename As String = FileUploadImg.FileName
    Dim fileType As String = filename.Substring(filename.Length - 4).ToLower()
    If (fileType = ".gif") Or (fileType = ".jpg") Or (fileType = ".png") Then
        FileUploadImg.SaveAs("C:\Users\Jane\Desktop\project\FileUpload\FileUpload\WebRole1\images\" & txtboxName.Text & "_" & FileUploadImg.FileName)
    Else
        MsgBox("failed")

    End If
End Sub

Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
       uploadImage()

        'End If
    End Sub

这是它的样子的图像

blank icon

2 个答案:

答案 0 :(得分:1)

您必须将已发布的文件保存到Web服务器上的持久存储中,并将文件映射到某个URL,以便可以从Internet访问它们。

在Azure环境中,本地磁盘(如c:)不会保留(想象多个Web角色 - 如何从其他实例提供相同的图像)。

解决方案是Azure Blob存储(您必须在Azure管理控制台中set-up)并将发布的文件上传到Blob存储容器。

// Setup the connection to Windows Azure Storage
var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
var blobClient = storageAccount.CreateCloudBlobClient();

// Get and create the container
var blobContainer = blobClient.GetContainerReference("public-images");
blobContainer.CreateIfNotExist();

    // Allow blob to be downloaded
    containerPermissions = new BlobContainerPermissions();
    containerPermissions.PublicAccess = BlobContainerPublicAccessType.Blob;
    blobContainer.SetPermissions(containerPermissions);

// Get the target blob reference
var blobAddressUri = String.Format("{0}{1}", fileName); //create random fileName here
var blob = BlobContainer.GetBlobReference(blobAddressUri);

// Set blob Content-Type
blob.Properties.ContentType = FileUploadImg.PostedFile.ContentType ;

// Upload to the blob storage account
blob.UploadFromStream(FileUploadImg.FileContent);

您的文件现已在blob.Uri处提供。

答案 1 :(得分:0)

您必须指定一个上传目录。例如,如果我在C:\,Website1中创建一个新项目,则direcotry将是C:\ Website1。然后我创建一个目录来存储上传:C:\ Website1 \ uploads并确保为IIS帐户设置读/写权限。然后我会这样做:

string uploadPath = MapPath( "pictures\\" );
this.fileUpload1.SaveAs( uploadPath + this.fileUpload1.FileName );

一旦文件在上传目录中,我就可以将它移动到我喜欢的任何地方。